Skip to content

Commit 22b1da5

Browse files
authored
test, check: assertive tests, runnable examples, real ActivityConf compatibility check, and CheckError→Error rename (#33)
* test: replace test/main.go runner with assertive unit tests - Remove test/main.go and the corresponding `go run .` step in the CI testing workflow; everything previously exercised there is now covered by `go test`. - Move `Filter`, `protoPkg`, `pathPrefix` into test/main_test.go so the test directory is self-contained. - Strengthen assertions in TestLoad / TestCheck / TestCheckCompatibility: validate Issue.Kind, Message prefixes ("load failed:" / "custom check failed:"), Workbook/Worksheet names, the exact text output for the single-issue Check case, and JSON payload keys ("workbook":, "worksheet":, "load failed:, "custom check failed:). - Mark the generated error.<ext>.go header with "DO NOT EDIT" by passing doNotEdit=true in generateError, since the whole file is templated and not meant to be hand-edited. Regenerated test/check/error.check.go to match. * refactor(check): rename CheckError to Error and Issue.Error to Issue.String Resolve two lint findings (revive `exported`/stutter and `errname`) on the generated check package without weakening semantics: - CheckError -> Error: avoid the `check.CheckError` stutter at the call site; consumers now use `check.Error`, which is the conventional Go name for a package's primary error type. - Issue.Error() -> Issue.String(): a single Issue is a diagnostic record, not an error value. The aggregate `*Error` is what implements the `error` interface; an individual `*Issue` now satisfies `fmt.Stringer` instead, so `errname` no longer flags it. Updated both code generator templates (error.go.tpl, hub.go.tpl) and regenerated test/check/error.check.go and test/check/hub.check.go. test/main_test.go is updated to use *check.Error in errors.As targets. Verified with `go vet ./...` and `go test ./...` (all green). * feat: add CSV load origin checking and update deps * test: add runnable examples for Hub.Check and Hub.CheckCompatibility Port the previously deleted test/main.go demo into Go example tests so the canonical Hub.Check / Hub.CheckCompatibility usage stays exercised by `go test` and discoverable via `go doc`. - Example_check: invokes Check on testdata/ with BreakFailedCount(1) so a single deterministic custom-check error is asserted via `// Output:`. - Example_checkCompatibility: invokes CheckCompatibility on testdata/ vs testdata1/ with SkipLoadErrors and BreakFailedCount(10); unwraps the returned *check.Error, sorts issues by (workbook, worksheet, kind), and prints `[kind] workbook/worksheet: <first-line-of-message>` for each issue. Sorting + first-line-only formatting eliminates ordering and prototext map non-determinism, allowing a full `// Output:` assertion over all collected issues. * feat: implement ActivityConf compatibility check Replace the placeholder CheckCompatibility method with a real implementation that detects removed item IDs between old and new config snapshots. Update tests and examples to reflect the new behavior and simplify deterministic output handling.
1 parent 718fa64 commit 22b1da5

18 files changed

Lines changed: 412 additions & 171 deletions

File tree

.github/workflows/testing.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ jobs:
4949
run: go test -v -timeout 30m -race ./... -coverprofile=coverage.txt
5050
-covermode=atomic
5151

52-
- name: Run checker
53-
working-directory: test
54-
run: go run .
55-
5652
- name: Upload coverage reports to Codecov
5753
uses: codecov/codecov-action@v5
5854
with:

cmd/protoc-gen-go-tableau-checker/embed/templates/error.go.tpl

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ type Issue struct {
2525
Worksheet *tableaupb.WorksheetOptions `json:"worksheet,omitempty"`
2626
}
2727

28-
// Error returns the issue as a human-readable string.
29-
func (i *Issue) Error() string {
28+
// String returns the issue as a human-readable string.
29+
func (i *Issue) String() string {
3030
return fmt.Sprintf("error: workbook %s, worksheet %s, %s",
3131
i.Workbook.GetName(),
3232
i.Worksheet.GetName(),
@@ -62,37 +62,37 @@ func (i *Issue) MarshalJSON() ([]byte, error) {
6262
return json.Marshal(out)
6363
}
6464

65-
// ErrorFormat is a function type that formats a CheckError into a string.
66-
type ErrorFormat func(*CheckError) string
65+
// ErrorFormat is a function type that formats an Error into a string.
66+
type ErrorFormat func(*Error) string
6767

6868
// ErrorFormatText formats issues as human-readable text lines (default).
69-
var ErrorFormatText ErrorFormat = func(e *CheckError) string {
69+
var ErrorFormatText ErrorFormat = func(e *Error) string {
7070
msgs := make([]string, len(e.Issues))
7171
for i, issue := range e.Issues {
72-
msgs[i] = issue.Error()
72+
msgs[i] = issue.String()
7373
}
7474
return strings.Join(msgs, "\n")
7575
}
7676

77-
// ErrorFormatJSON formats the CheckError as a JSON object.
78-
var ErrorFormatJSON ErrorFormat = func(e *CheckError) string {
77+
// ErrorFormatJSON formats the Error as a JSON object.
78+
var ErrorFormatJSON ErrorFormat = func(e *Error) string {
7979
b, err := json.Marshal(e)
8080
if err != nil {
81-
log.Errorf("failed to marshal CheckError to JSON: %+v", err)
81+
log.Errorf("failed to marshal Error to JSON: %+v", err)
8282
return ""
8383
}
8484
return string(b)
8585
}
8686

87-
// CheckError is the error type returned by Check and CheckCompatibility.
88-
type CheckError struct {
87+
// Error is the error type returned by Check and CheckCompatibility.
88+
type Error struct {
8989
Issues []*Issue `json:"issues"`
9090
format ErrorFormat
9191
}
9292

9393
// Error formats the result using the configured ErrorFormat.
9494
// Falls back to ErrorFormatText if format is nil.
95-
func (e *CheckError) Error() string {
95+
func (e *Error) Error() string {
9696
if e.format == nil {
9797
return ErrorFormatText(e)
9898
}

cmd/protoc-gen-go-tableau-checker/embed/templates/hub.go.tpl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,11 @@ func (h *Hub) Check(dir string, format format.Format, options ...Option) error {
190190
// load hub
191191
loadIssues := h.load(loadTypeDefault, opts.ProtoPackage, dir, format, opts.LoadOptions...)
192192
if len(loadIssues) > 0 {
193-
return &CheckError{Issues: loadIssues, format: opts.ErrorFormat}
193+
return &Error{Issues: loadIssues, format: opts.ErrorFormat}
194194
}
195195
checkIssues := h.check(opts.ProtoPackage, opts.BreakFailedCount)
196196
if len(checkIssues) > 0 {
197-
return &CheckError{Issues: checkIssues, format: opts.ErrorFormat}
197+
return &Error{Issues: checkIssues, format: opts.ErrorFormat}
198198
}
199199
return nil
200200
}
@@ -204,19 +204,19 @@ func (h *Hub) CheckCompatibility(dir, newDir string, format format.Format, optio
204204
// load new hub
205205
newLoadIssues := h.load(loadTypeNew, opts.ProtoPackage, newDir, format, opts.LoadOptions...)
206206
if len(newLoadIssues) > 0 && !opts.SkipLoadErrors {
207-
return &CheckError{Issues: newLoadIssues, format: opts.ErrorFormat}
207+
return &Error{Issues: newLoadIssues, format: opts.ErrorFormat}
208208
}
209209
newHub := tableau.NewHub()
210210
newHub.SetMessagerMap(h.GetMessagerMap())
211211
// load hub
212212
oldLoadIssues := h.load(loadTypeOld, opts.ProtoPackage, dir, format, opts.LoadOptions...)
213213
if len(oldLoadIssues) > 0 && !opts.SkipLoadErrors {
214-
return &CheckError{Issues: append(newLoadIssues, oldLoadIssues...), format: opts.ErrorFormat}
214+
return &Error{Issues: append(newLoadIssues, oldLoadIssues...), format: opts.ErrorFormat}
215215
}
216216
compatIssues := h.checkCompatibility(newHub, opts.ProtoPackage, opts.BreakFailedCount)
217217
allIssues := append(append(newLoadIssues, oldLoadIssues...), compatIssues...)
218218
if len(allIssues) > 0 {
219-
return &CheckError{Issues: allIssues, format: opts.ErrorFormat}
219+
return &Error{Issues: allIssues, format: opts.ErrorFormat}
220220
}
221221
return nil
222222
}

cmd/protoc-gen-go-tableau-checker/error.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ import (
77
"google.golang.org/protobuf/compiler/protogen"
88
)
99

10-
// generateError generates the error file containing Issue, CheckResult, ErrorFormat, and CheckError types.
10+
// generateError generates the error file containing Issue, ErrorFormat, and Error types.
1111
func generateError(gen *protogen.Plugin) error {
1212
errorTemplateBytes, err := efs.ReadFile("embed/templates/error.go.tpl")
1313
if err != nil {
1414
return fmt.Errorf("read embedded error.go.tpl: %w", err)
1515
}
1616
filename := filepath.Join("error." + checkExt + ".go")
1717
g := gen.NewGeneratedFile(filename, "")
18-
generateCommonHeader(gen, g, false)
18+
generateCommonHeader(gen, g, true)
1919
g.P()
2020
g.P("package ", params.pkg)
2121
g.P("import (")

go.mod

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,41 @@ go 1.24.0
44

55
require (
66
github.com/pmezard/go-difflib v1.0.0
7-
github.com/stretchr/testify v1.10.0
7+
github.com/stretchr/testify v1.11.1
88
github.com/tableauio/loader v0.5.0
9-
github.com/tableauio/tableau v0.15.1
10-
google.golang.org/protobuf v1.36.6
9+
github.com/tableauio/tableau v0.15.2-0.20260526085333-24a1dc8037bd
10+
google.golang.org/protobuf v1.36.11
1111
)
1212

1313
require (
14-
github.com/antchfx/xpath v1.2.3 // indirect
15-
github.com/bufbuild/protocompile v0.10.0 // indirect
14+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1 // indirect
15+
buf.build/go/protovalidate v1.1.3 // indirect
16+
cel.dev/expr v0.25.1 // indirect
17+
github.com/antchfx/xpath v1.3.6 // indirect
18+
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
19+
github.com/bufbuild/protocompile v0.14.1 // indirect
1620
github.com/davecgh/go-spew v1.1.1 // indirect
1721
github.com/emirpasic/gods v1.18.1 // indirect
18-
github.com/google/go-cmp v0.7.0 // indirect
22+
github.com/google/cel-go v0.27.0 // indirect
1923
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
2024
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
2125
github.com/protocolbuffers/txtpbfmt v0.0.0-20240820135758-21b1d9897dc7 // indirect
2226
github.com/richardlehane/mscfb v1.0.4 // indirect
2327
github.com/richardlehane/msoleps v1.0.4 // indirect
2428
github.com/subchen/go-xmldom v1.1.2 // indirect
25-
github.com/valyala/fastjson v1.6.7 // indirect
29+
github.com/valyala/fastjson v1.6.10 // indirect
2630
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d // indirect
2731
github.com/xuri/excelize/v2 v2.9.0 // indirect
2832
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect
29-
go.uber.org/atomic v1.7.0 // indirect
3033
go.uber.org/multierr v1.11.0 // indirect
31-
go.uber.org/zap v1.24.0 // indirect
34+
go.uber.org/zap v1.27.1 // indirect
3235
golang.org/x/crypto v0.40.0 // indirect
36+
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6 // indirect
3337
golang.org/x/net v0.42.0 // indirect
3438
golang.org/x/sync v0.16.0 // indirect
35-
golang.org/x/text v0.27.0 // indirect
39+
golang.org/x/text v0.28.0 // indirect
40+
google.golang.org/genproto/googleapis/api v0.0.0-20250811230008-5f3141c8851a // indirect
41+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250811230008-5f3141c8851a // indirect
3642
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
3743
gopkg.in/yaml.v3 v3.0.1 // indirect
3844
)

go.sum

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,36 @@
1+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1 h1:PMmTMyvHScV9Mn8wc6ASge9uRcHy0jtqPd+fM35LmsQ=
2+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM=
3+
buf.build/go/protovalidate v1.1.3 h1:m2GVEgQWd7rk+vIoAZ+f0ygGjvQTuqPQapBBdcpWVPE=
4+
buf.build/go/protovalidate v1.1.3/go.mod h1:9XIuohWz+kj+9JVn3WQneHA5LZP50mjvneZMnbLkiIE=
5+
cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
6+
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
17
github.com/antchfx/xpath v0.0.0-20170515025933-1f3266e77307/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
2-
github.com/antchfx/xpath v1.2.3 h1:CCZWOzv5bAqjVv0offZ2LVgVYFbeldKQVuLNbViZdes=
3-
github.com/antchfx/xpath v1.2.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
4-
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
5-
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
6-
github.com/bufbuild/protocompile v0.10.0 h1:+jW/wnLMLxaCEG8AX9lD0bQ5v9h1RUiMKOBOT5ll9dM=
7-
github.com/bufbuild/protocompile v0.10.0/go.mod h1:G9qQIQo0xZ6Uyj6CMNz0saGmx2so+KONo8/KrELABiY=
8-
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
8+
github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI=
9+
github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
10+
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
11+
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
12+
github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4=
13+
github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs=
14+
github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw=
15+
github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c=
916
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
1017
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1118
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
1219
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
20+
github.com/google/cel-go v0.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo=
21+
github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw=
1322
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
1423
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
24+
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
25+
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
26+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
27+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
1528
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
1629
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
1730
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
1831
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
1932
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
2033
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
21-
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
22-
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
2334
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
2435
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
2536
github.com/protocolbuffers/txtpbfmt v0.0.0-20240820135758-21b1d9897dc7 h1:GkKZUEPNgwIk3LK4Er5vxnaNKk1pdjI3Oc6oTBwBsxQ=
@@ -29,46 +40,53 @@ github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7
2940
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
3041
github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00=
3142
github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
32-
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
33-
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
34-
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
35-
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
43+
github.com/rodaine/protogofakeit v0.1.1 h1:ZKouljuRM3A+TArppfBqnH8tGZHOwM/pjvtXe9DaXH8=
44+
github.com/rodaine/protogofakeit v0.1.1/go.mod h1:pXn/AstBYMaSfc1/RqH3N82pBuxtWgejz1AlYpY1mI0=
45+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
46+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
3647
github.com/subchen/go-xmldom v1.1.2 h1:7evI2YqfYYOnuj+PBwyaOZZYjl3iWq35P6KfBUw9jeU=
3748
github.com/subchen/go-xmldom v1.1.2/go.mod h1:6Pg/HuX5/T4Jlj0IPJF1sRxKVoI/rrKP6LIMge9d5/8=
3849
github.com/tableauio/loader v0.5.0 h1:Ci1zhByu69hLDc22/2CukYGlbFaxLeyX55k1kh0trG4=
3950
github.com/tableauio/loader v0.5.0/go.mod h1:xjvPBxVXoFTQfpRJn8qdpvMEYxIBs5f4p/KFtLHIEh8=
40-
github.com/tableauio/tableau v0.15.1 h1:NbTxG7xft57s5SJUXVykNiKWE7/JPKIZsQR0S57hsuE=
41-
github.com/tableauio/tableau v0.15.1/go.mod h1:TjQ0ZZMLQ4lBsFO+pMYdfxhlu68taqtpA4/BlAiqBbI=
42-
github.com/valyala/fastjson v1.6.7 h1:ZE4tRy0CIkh+qDc5McjatheGX2czdn8slQjomexVpBM=
43-
github.com/valyala/fastjson v1.6.7/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
51+
github.com/tableauio/tableau v0.15.2-0.20260526085333-24a1dc8037bd h1:RS+SnIxz3LYRL70ozPmmM0J8JXJ2CeKHLPAPZP73cZU=
52+
github.com/tableauio/tableau v0.15.2-0.20260526085333-24a1dc8037bd/go.mod h1:YDrehTxYkrSax8Qg8MlrzCTx8+RM4VqkNrdlhaoQYAc=
53+
github.com/valyala/fastjson v1.6.10 h1:/yjJg8jaVQdYR3arGxPE2X5z89xrlhS0eGXdv+ADTh4=
54+
github.com/valyala/fastjson v1.6.10/go.mod h1:e6FubmQouUNP73jtMLmcbxS6ydWIpOfhz34TSfO3JaE=
4455
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d h1:llb0neMWDQe87IzJLS4Ci7psK/lVsjIS2otl+1WyRyY=
4556
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
4657
github.com/xuri/excelize/v2 v2.9.0 h1:1tgOaEq92IOEumR1/JfYS/eR0KHOCsRv/rYXXh6YJQE=
4758
github.com/xuri/excelize/v2 v2.9.0/go.mod h1:uqey4QBZ9gdMeWApPLdhm9x+9o2lq4iVmjiLfBS5hdE=
4859
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 h1:hPVCafDV85blFTabnqKgNhDCkJX25eik94Si9cTER4A=
4960
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
50-
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
51-
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
52-
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
53-
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
61+
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
62+
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
5463
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
5564
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
56-
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
57-
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
65+
go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=
66+
go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
67+
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
68+
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
5869
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
5970
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
71+
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6 h1:SbTAbRFnd5kjQXbczszQ0hdk3ctwYf3qBNH9jIsGclE=
72+
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4=
6073
golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ=
6174
golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
6275
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
6376
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
6477
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
6578
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
66-
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
67-
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
68-
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
69-
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
70-
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
79+
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
80+
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
81+
google.golang.org/genproto/googleapis/api v0.0.0-20250811230008-5f3141c8851a h1:DMCgtIAIQGZqJXMVzJF4MV8BlWoJh2ZuFiRdAleyr58=
82+
google.golang.org/genproto/googleapis/api v0.0.0-20250811230008-5f3141c8851a/go.mod h1:y2yVLIE/CSMCPXaHnSKXxu1spLPnglFLegmgdY23uuE=
83+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250811230008-5f3141c8851a h1:tPE/Kp+x9dMSwUm/uM0JKK0IfdiJkwAbSMSeZBXXJXc=
84+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250811230008-5f3141c8851a/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo=
85+
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
86+
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
7187
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
88+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
89+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
7290
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
7391
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
7492
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

test/check/error.check.go

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)