]> git.ipfire.org Git - thirdparty/git.git/blob - t/t7061-wtstatus-ignore.sh
The second batch
[thirdparty/git.git] / t / t7061-wtstatus-ignore.sh
1 #!/bin/sh
2
3 test_description='git-status ignored files'
4
5 . ./test-lib.sh
6
7 cat >expected <<\EOF
8 ?? .gitignore
9 ?? actual
10 ?? expected
11 ?? untracked/
12 !! untracked/ignored
13 EOF
14
15 test_expect_success 'status untracked directory with --ignored' '
16 echo "ignored" >.gitignore &&
17 mkdir untracked &&
18 : >untracked/ignored &&
19 : >untracked/uncommitted &&
20 git status --porcelain --ignored >actual &&
21 test_cmp expected actual
22 '
23
24 test_expect_success 'same with gitignore starting with BOM' '
25 printf "\357\273\277ignored\n" >.gitignore &&
26 mkdir -p untracked &&
27 : >untracked/ignored &&
28 : >untracked/uncommitted &&
29 git status --porcelain --ignored >actual &&
30 test_cmp expected actual
31 '
32
33 test_expect_success 'status untracked files --ignored with pathspec (no match)' '
34 git status --porcelain --ignored -- untracked/i >actual &&
35 test_must_be_empty actual &&
36 git status --porcelain --ignored -- untracked/u >actual &&
37 test_must_be_empty actual
38 '
39
40 test_expect_success 'status untracked files --ignored with pathspec (literal match)' '
41 git status --porcelain --ignored -- untracked/ignored >actual &&
42 echo "!! untracked/ignored" >expected &&
43 test_cmp expected actual &&
44 git status --porcelain --ignored -- untracked/uncommitted >actual &&
45 echo "?? untracked/uncommitted" >expected &&
46 test_cmp expected actual
47 '
48
49 test_expect_success 'status untracked files --ignored with pathspec (glob match)' '
50 git status --porcelain --ignored -- untracked/i\* >actual &&
51 echo "!! untracked/ignored" >expected &&
52 test_cmp expected actual &&
53 git status --porcelain --ignored -- untracked/u\* >actual &&
54 echo "?? untracked/uncommitted" >expected &&
55 test_cmp expected actual
56 '
57
58 cat >expected <<\EOF
59 ?? .gitignore
60 ?? actual
61 ?? expected
62 ?? untracked/uncommitted
63 !! untracked/ignored
64 EOF
65
66 test_expect_success 'status untracked directory with --ignored -u' '
67 git status --porcelain --ignored -u >actual &&
68 test_cmp expected actual
69 '
70 cat >expected <<\EOF
71 ?? untracked/
72 !! untracked/ignored
73 EOF
74
75 test_expect_success 'status of untracked directory with --ignored works with or without prefix' '
76 git status --porcelain --ignored >tmp &&
77 grep untracked/ tmp >actual &&
78 rm tmp &&
79 test_cmp expected actual &&
80
81 git status --porcelain --ignored untracked/ >actual &&
82 test_cmp expected actual
83 '
84
85 cat >expected <<\EOF
86 ?? untracked/uncommitted
87 !! untracked/ignored
88 EOF
89
90 test_expect_success 'status prefixed untracked sub-directory with --ignored -u' '
91 git status --porcelain --ignored -u untracked/ >actual &&
92 test_cmp expected actual
93 '
94
95 cat >expected <<\EOF
96 ?? .gitignore
97 ?? actual
98 ?? expected
99 !! ignored/
100 EOF
101
102 test_expect_success 'status ignored directory with --ignore' '
103 rm -rf untracked &&
104 mkdir ignored &&
105 : >ignored/uncommitted &&
106 git status --porcelain --ignored >actual &&
107 test_cmp expected actual
108 '
109
110 cat >expected <<\EOF
111 ?? .gitignore
112 ?? actual
113 ?? expected
114 !! ignored/uncommitted
115 EOF
116
117 test_expect_success 'status ignored directory with --ignore -u' '
118 git status --porcelain --ignored -u >actual &&
119 test_cmp expected actual
120 '
121
122 cat >expected <<\EOF
123 ?? .gitignore
124 ?? actual
125 ?? expected
126 EOF
127
128 test_expect_success 'status empty untracked directory with --ignore' '
129 rm -rf ignored &&
130 mkdir untracked-ignored &&
131 mkdir untracked-ignored/test &&
132 git status --porcelain --ignored >actual &&
133 test_cmp expected actual
134 '
135
136 cat >expected <<\EOF
137 ?? .gitignore
138 ?? actual
139 ?? expected
140 EOF
141
142 test_expect_success 'status empty untracked directory with --ignore -u' '
143 git status --porcelain --ignored -u >actual &&
144 test_cmp expected actual
145 '
146
147 cat >expected <<\EOF
148 ?? .gitignore
149 ?? actual
150 ?? expected
151 !! untracked-ignored/
152 EOF
153
154 test_expect_success 'status untracked directory with ignored files with --ignore' '
155 : >untracked-ignored/ignored &&
156 : >untracked-ignored/test/ignored &&
157 git status --porcelain --ignored >actual &&
158 test_cmp expected actual
159 '
160
161 cat >expected <<\EOF
162 ?? .gitignore
163 ?? actual
164 ?? expected
165 !! untracked-ignored/ignored
166 !! untracked-ignored/test/ignored
167 EOF
168
169 test_expect_success 'status untracked directory with ignored files with --ignore -u' '
170 git status --porcelain --ignored -u >actual &&
171 test_cmp expected actual
172 '
173
174 cat >expected <<\EOF
175 ?? .gitignore
176 ?? actual
177 ?? expected
178 EOF
179
180 test_expect_success 'status ignored tracked directory with --ignore' '
181 rm -rf untracked-ignored &&
182 mkdir tracked &&
183 : >tracked/committed &&
184 git add tracked/committed &&
185 git commit -m. &&
186 echo "tracked" >.gitignore &&
187 git status --porcelain --ignored >actual &&
188 test_cmp expected actual
189 '
190
191 cat >expected <<\EOF
192 ?? .gitignore
193 ?? actual
194 ?? expected
195 EOF
196
197 test_expect_success 'status ignored tracked directory with --ignore -u' '
198 git status --porcelain --ignored -u >actual &&
199 test_cmp expected actual
200 '
201
202 cat >expected <<\EOF
203 ?? .gitignore
204 ?? actual
205 ?? expected
206 EOF
207
208 test_expect_success 'status ignored tracked directory and ignored file with --ignore' '
209 echo "committed" >>.gitignore &&
210 git status --porcelain --ignored >actual &&
211 test_cmp expected actual
212 '
213
214 cat >expected <<\EOF
215 ?? .gitignore
216 ?? actual
217 ?? expected
218 EOF
219
220 test_expect_success 'status ignored tracked directory and ignored file with --ignore -u' '
221 git status --porcelain --ignored -u >actual &&
222 test_cmp expected actual
223 '
224
225 cat >expected <<\EOF
226 ?? .gitignore
227 ?? actual
228 ?? expected
229 !! tracked/uncommitted
230 EOF
231
232 test_expect_success 'status ignored tracked directory and uncommitted file with --ignore' '
233 echo "tracked" >.gitignore &&
234 : >tracked/uncommitted &&
235 git status --porcelain --ignored >actual &&
236 test_cmp expected actual
237 '
238
239 cat >expected <<\EOF
240 ?? .gitignore
241 ?? actual
242 ?? expected
243 !! tracked/uncommitted
244 EOF
245
246 test_expect_success 'status ignored tracked directory and uncommitted file with --ignore -u' '
247 git status --porcelain --ignored -u >actual &&
248 test_cmp expected actual
249 '
250
251 cat >expected <<\EOF
252 ?? .gitignore
253 ?? actual
254 ?? expected
255 !! tracked/ignored/
256 EOF
257
258 test_expect_success 'status ignored tracked directory with uncommitted file in untracked subdir with --ignore' '
259 rm -rf tracked/uncommitted &&
260 mkdir tracked/ignored &&
261 : >tracked/ignored/uncommitted &&
262 git status --porcelain --ignored >actual &&
263 test_cmp expected actual
264 '
265
266 cat >expected <<\EOF
267 ?? .gitignore
268 ?? actual
269 ?? expected
270 !! tracked/ignored/uncommitted
271 EOF
272
273 test_expect_success 'status ignored tracked directory with uncommitted file in untracked subdir with --ignore -u' '
274 git status --porcelain --ignored -u >actual &&
275 test_cmp expected actual
276 '
277
278 cat >expected <<\EOF
279 ?? .gitignore
280 ?? actual
281 ?? expected
282 !! tracked/ignored/uncommitted
283 EOF
284
285 test_expect_success 'status ignored tracked directory with uncommitted file in tracked subdir with --ignore' '
286 : >tracked/ignored/committed &&
287 git add -f tracked/ignored/committed &&
288 git commit -m. &&
289 git status --porcelain --ignored >actual &&
290 test_cmp expected actual
291 '
292
293 cat >expected <<\EOF
294 ?? .gitignore
295 ?? actual
296 ?? expected
297 !! tracked/ignored/uncommitted
298 EOF
299
300 test_expect_success 'status ignored tracked directory with uncommitted file in tracked subdir with --ignore -u' '
301 git status --porcelain --ignored -u >actual &&
302 test_cmp expected actual
303 '
304
305 cat >expected <<\EOF
306 !! tracked/submodule/
307 EOF
308
309 test_expect_success 'status ignores submodule in excluded directory' '
310 git init tracked/submodule &&
311 test_commit -C tracked/submodule initial &&
312 git status --porcelain --ignored -u tracked/submodule >actual &&
313 test_cmp expected actual
314 '
315
316 test_done