Skip to content

Commit c7b0c31

Browse files
authored
Merge pull request #14 from gostaticanalysis/testdata-use-txtar
passes/commentmap: use txtar for testdata
2 parents 95f35d9 + c77ca92 commit c7b0c31

File tree

8 files changed

+176
-54
lines changed

8 files changed

+176
-54
lines changed

go.mod

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
module github.com/gostaticanalysis/comment
22

3-
go 1.12
3+
go 1.15
44

55
require (
6-
github.com/google/go-cmp v0.5.1
7-
golang.org/x/tools v0.0.0-20200820010801-b793a1359eac
6+
github.com/google/go-cmp v0.5.4
7+
github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4
8+
golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d
89
)

go.sum

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,48 @@
1-
github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
2-
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
3-
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
1+
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
2+
github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
3+
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
4+
github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4 h1:d2/eIbH9XjD1fFwD5SHv8x168fjbQ9PB8hvs8DSEC08=
5+
github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M=
6+
github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI=
7+
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
8+
github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k=
9+
github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=
10+
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
11+
github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI=
12+
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
13+
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
14+
github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc=
15+
github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
16+
github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA=
17+
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
18+
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag=
19+
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
20+
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
421
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
522
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
623
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
7-
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
8-
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
24+
golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY=
25+
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
926
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
1027
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
11-
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
28+
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
1229
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
13-
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
30+
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
1431
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
1532
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
16-
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
33+
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
34+
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk=
35+
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
1736
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
37+
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
38+
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
39+
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
40+
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
1841
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
19-
golang.org/x/tools v0.0.0-20200820010801-b793a1359eac h1:DugppSxw0LSF8lcjaODPJZoDzq0ElTGskTst3ZaBkHI=
20-
golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
42+
golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d h1:TWciQgVQK3rhquuBn8vdgrXzMaeTaRd/DVJyTONxE7I=
43+
golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=
2144
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
2245
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
23-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
2446
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
47+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
48+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

helper_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ import (
77
"go/token"
88
"testing"
99

10-
"github.com/gostaticanalysis/comment"
1110
"golang.org/x/tools/txtar"
11+
12+
"github.com/gostaticanalysis/comment"
1213
)
1314

1415
func parse(t *testing.T, fset *token.FileSet, path string) []*ast.File {

passes/commentmap/commentmap.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ package commentmap
33
import (
44
"reflect"
55

6-
"github.com/gostaticanalysis/comment"
76
"golang.org/x/tools/go/analysis"
7+
8+
"github.com/gostaticanalysis/comment"
89
)
910

1011
var Analyzer = &analysis.Analyzer{
Lines changed: 88 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,105 @@
11
package commentmap_test
22

33
import (
4+
"fmt"
45
"go/ast"
6+
"os"
7+
"path/filepath"
8+
"strings"
59
"testing"
610

7-
"github.com/gostaticanalysis/comment"
8-
"github.com/gostaticanalysis/comment/passes/commentmap"
911
"golang.org/x/tools/go/analysis"
1012
"golang.org/x/tools/go/analysis/analysistest"
1113
"golang.org/x/tools/go/analysis/passes/inspect"
1214
"golang.org/x/tools/go/ast/inspector"
15+
"golang.org/x/tools/txtar"
16+
17+
"github.com/gostaticanalysis/comment"
18+
"github.com/gostaticanalysis/comment/passes/commentmap"
19+
"github.com/gostaticanalysis/testutil"
1320
)
1421

1522
func Test_Maps_Ignore(t *testing.T) {
16-
testdata := analysistest.TestData()
17-
analyzer := &analysis.Analyzer{
18-
Requires: []*analysis.Analyzer{
19-
inspect.Analyzer,
20-
commentmap.Analyzer,
23+
t.Parallel()
24+
25+
tests := map[string]struct {
26+
path string
27+
found bool
28+
}{
29+
"ignore": {
30+
path: "ignore",
31+
found: true,
2132
},
22-
Run: func(pass *analysis.Pass) (interface{}, error) {
23-
inspect := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector)
24-
cmaps := pass.ResultOf[commentmap.Analyzer].(comment.Maps)
25-
inspect.Preorder(nil, func(n ast.Node) {
26-
if cmaps.Ignore(n, "check") {
27-
pass.Reportf(n.Pos(), "ignore")
28-
}
29-
})
30-
return nil, nil
33+
"notignore": {
34+
path: "notignore",
35+
found: false,
3136
},
3237
}
33-
analysistest.Run(t, testdata, analyzer, "ignore")
38+
for name, tt := range tests {
39+
name := name
40+
tt := tt
41+
t.Run(name, func(t *testing.T) {
42+
t.Parallel()
43+
44+
testdata := parseTestdata(t, tt.path)
45+
analyzer := &analysis.Analyzer{
46+
Requires: []*analysis.Analyzer{
47+
inspect.Analyzer,
48+
commentmap.Analyzer,
49+
},
50+
Run: func(pass *analysis.Pass) (interface{}, error) {
51+
var found bool
52+
53+
ins := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector)
54+
cmaps := pass.ResultOf[commentmap.Analyzer].(comment.Maps)
55+
ins.Preorder(nil, func(n ast.Node) {
56+
if cmaps.Ignore(n, "check") {
57+
found = true
58+
}
59+
})
60+
61+
if found != tt.found {
62+
return nil, fmt.Errorf("%q not found", name)
63+
}
64+
65+
return nil, nil
66+
},
67+
}
68+
69+
analysistest.Run(t, testdata, analyzer, tt.path)
70+
})
71+
}
72+
}
73+
74+
func parseTestdata(t *testing.T, name string) string {
75+
t.Helper()
76+
77+
filemap := make(map[string]string)
78+
walkFn := func(path string, info os.FileInfo, err error) error {
79+
if err != nil {
80+
return err
81+
}
82+
if info.IsDir() {
83+
return nil
84+
}
85+
86+
if !strings.Contains(path, name) {
87+
return filepath.SkipDir
88+
}
89+
90+
ar, err := txtar.ParseFile(path)
91+
if err != nil {
92+
return err
93+
}
94+
for _, file := range ar.Files {
95+
filemap[filepath.Join(name, file.Name)] = string(file.Data)
96+
}
97+
98+
return nil
99+
}
100+
if err := filepath.Walk(analysistest.TestData(), walkFn); err != nil {
101+
t.Fatal(err)
102+
}
103+
104+
return testutil.WriteFiles(t, filemap)
34105
}

passes/commentmap/testdata/src/ignore/a.go

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
-- a.go --
2+
package ignore
3+
4+
func _() {
5+
//lint:ignore check test
6+
var _ = ""
7+
}
8+
9+
-- b.go --
10+
package ignore
11+
12+
func _() {
13+
//lint:ignore check1,check,check2 test
14+
var _ = ""
15+
}
16+
17+
-- c.go --
18+
package ignore
19+
20+
func _() {
21+
// lint:ignore check test
22+
var _ = ""
23+
}
24+
25+
-- d.go --
26+
package ignore
27+
28+
func _() {
29+
//lint:ignore check multiple words in reason
30+
var _ = ""
31+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-- a.go --
2+
package ignore
3+
4+
func _() {
5+
//lint:ignore check1 test
6+
var _ = ""
7+
}
8+
-- b.go --
9+
package ignore
10+
11+
func _() {
12+
//lint:ignore check1
13+
var _ = ""
14+
}

0 commit comments

Comments
 (0)