1 # go build ./... should skip 'ignore' directives
2 # See golang.org/issue/42965
3
4 env ROOT=$WORK${/}gopath${/}src
5
6 # no ignore directive; should not skip any directories.
7 cp go.mod.orig go.mod
8 go build -x ./...
9 stderr 'packagefile example/foo/secret'
10 stderr 'packagefile example/pkg/foo'
11 stderr 'packagefile example/pkg/fo'
12 ! stderr 'ignoring directory'
13
14 # ignored ./foo should be skipped.
15 cp go.mod.relative go.mod
16 go build -x ./...
17 stderr 'packagefile example/pkg/foo'
18 stderr 'packagefile example/pkg/fo'
19 ! stderr 'packagefile example/foo/secret'
20 stderr 'ignoring directory '$ROOT''${/}'foo'
21 ! stderr 'ignoring directory '$ROOT''${/}'pkg'${/}'foo'
22
23 # ignored foo; any foo should be skipped.
24 cp go.mod.any go.mod
25 go build -x ./...
26 stderr 'packagefile example/pkg/fo'
27 ! stderr 'packagefile example/pkg/foo'
28 ! stderr 'packagefile example/foo/secret'
29 stderr 'ignoring directory '$ROOT''${/}'foo'
30 stderr 'ignoring directory '$ROOT''${/}'pkg'${/}'foo'
31
32 # non-existent ignore; should not skip any directories.
33 cp go.mod.dne go.mod
34 go build -x ./...
35 stderr 'packagefile example/foo/secret'
36 stderr 'packagefile example/pkg/foo'
37 stderr 'packagefile example/pkg/fo'
38 ! stderr 'ignoring directory'
39
40 # ignored fo; should not skip foo/ and should skip fo/
41 cp go.mod.partial go.mod
42 go build -x ./...
43 ! stderr 'ignoring directory '$ROOT''${/}'foo'
44 stderr 'ignoring directory '$ROOT''${/}'pkg'${/}'fo$'
45 ! stderr 'ignoring directory '$ROOT''${/}'pkg'${/}'foo'
46
47 # ignored pkg/foo; should skip pkg/foo/
48 cp go.mod.tree go.mod
49 go build -x ./...
50 stderr 'packagefile example/foo/secret'
51 stderr 'packagefile example/pkg/fo'
52 stderr 'ignoring directory '$ROOT''${/}'pkg'${/}'foo'
53
54 # ignored /pkg/foo/; should skip pkg/foo/
55 cp go.mod.sep1 go.mod
56 go build -x ./...
57 stderr 'packagefile example/foo/secret'
58 stderr 'packagefile example/pkg/fo'
59 stderr 'ignoring directory '$ROOT''${/}'pkg'${/}'foo'
60
61 # ignored pkg/foo/; should skip pkg/foo/
62 cp go.mod.sep2 go.mod
63 go build -x ./...
64 stderr 'packagefile example/foo/secret'
65 stderr 'packagefile example/pkg/fo'
66 stderr 'ignoring directory '$ROOT''${/}'pkg'${/}'foo'
67
68 # ignored /pkg/foo; should skip pkg/foo/
69 cp go.mod.sep3 go.mod
70 go build -x ./...
71 stderr 'packagefile example/foo/secret'
72 stderr 'packagefile example/pkg/fo'
73 stderr 'ignoring directory '$ROOT''${/}'pkg'${/}'foo'
74
75 -- foo/secret/secret.go --
76 package main
77 func main() {}
78 -- pkg/foo/foo.go --
79 package main
80 func main() {}
81 -- pkg/fo/fo.go --
82 package main
83 func main() {}
84 -- go.mod.orig --
85 module example
86
87 go 1.24
88
89 -- go.mod.relative --
90 module example
91
92 go 1.24
93
94 ignore ./foo
95
96 -- go.mod.any --
97 module example
98
99 go 1.24
100
101 ignore foo
102
103 -- go.mod.dne --
104 module example
105
106 go 1.24
107
108 ignore bar
109
110 -- go.mod.partial --
111 module example
112
113 go 1.24
114
115 ignore fo
116
117 -- go.mod.tree --
118 module example
119
120 go 1.24
121
122 ignore pkg/foo
123
124 -- go.mod.sep1 --
125 module example
126
127 go 1.24
128
129 ignore /pkg/foo/
130
131 -- go.mod.sep2 --
132 module example
133
134 go 1.24
135
136 ignore pkg/foo/
137
138 -- go.mod.sep3 --
139 module example
140
141 go 1.24
142
143 ignore /pkg/foo
144
145 -- main.go --
146 package main
147 func main() {}
148
View as plain text