]>
Commit | Line | Data |
---|---|---|
367c9886 JS |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2007 Johannes E. Schindelin | |
4 | # | |
5 | ||
47a528ad | 6 | test_description='git status' |
367c9886 JS |
7 | |
8 | . ./test-lib.sh | |
9 | ||
5d3dd915 NTND |
10 | test_expect_success 'status -h in broken repository' ' |
11 | mkdir broken && | |
12 | test_when_finished "rm -fr broken" && | |
13 | ( | |
14 | cd broken && | |
15 | git init && | |
16 | echo "[status] showuntrackedfiles = CORRUPT" >>.git/config && | |
17 | test_expect_code 129 git status -h >usage 2>&1 | |
18 | ) && | |
cc6658e7 | 19 | test_i18ngrep "[Uu]sage" broken/usage |
5d3dd915 NTND |
20 | ' |
21 | ||
22 | test_expect_success 'commit -h in broken repository' ' | |
23 | mkdir broken && | |
24 | test_when_finished "rm -fr broken" && | |
25 | ( | |
26 | cd broken && | |
27 | git init && | |
28 | echo "[status] showuntrackedfiles = CORRUPT" >>.git/config && | |
29 | test_expect_code 129 git commit -h >usage 2>&1 | |
30 | ) && | |
cc6658e7 | 31 | test_i18ngrep "[Uu]sage" broken/usage |
5d3dd915 NTND |
32 | ' |
33 | ||
367c9886 | 34 | test_expect_success 'setup' ' |
68cfc6f5 MG |
35 | : >tracked && |
36 | : >modified && | |
367c9886 | 37 | mkdir dir1 && |
68cfc6f5 MG |
38 | : >dir1/tracked && |
39 | : >dir1/modified && | |
367c9886 | 40 | mkdir dir2 && |
68cfc6f5 MG |
41 | : >dir1/tracked && |
42 | : >dir1/modified && | |
367c9886 | 43 | git add . && |
ff58b9aa JK |
44 | |
45 | git status >output && | |
46 | ||
367c9886 JS |
47 | test_tick && |
48 | git commit -m initial && | |
68cfc6f5 MG |
49 | : >untracked && |
50 | : >dir1/untracked && | |
51 | : >dir2/untracked && | |
52 | echo 1 >dir1/modified && | |
53 | echo 2 >dir2/modified && | |
54 | echo 3 >dir2/added && | |
367c9886 JS |
55 | git add dir2/added |
56 | ' | |
57 | ||
cc6658e7 JH |
58 | test_expect_success 'status (1)' ' |
59 | test_i18ngrep "use \"git rm --cached <file>\.\.\.\" to unstage" output | |
ff58b9aa JK |
60 | ' |
61 | ||
68cfc6f5 | 62 | cat >expect <<\EOF |
367c9886 JS |
63 | # On branch master |
64 | # Changes to be committed: | |
65 | # (use "git reset HEAD <file>..." to unstage) | |
66 | # | |
67 | # new file: dir2/added | |
68 | # | |
8009d83c | 69 | # Changes not staged for commit: |
367c9886 | 70 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 71 | # (use "git checkout -- <file>..." to discard changes in working directory) |
367c9886 JS |
72 | # |
73 | # modified: dir1/modified | |
74 | # | |
75 | # Untracked files: | |
76 | # (use "git add <file>..." to include in what will be committed) | |
77 | # | |
78 | # dir1/untracked | |
79 | # dir2/modified | |
80 | # dir2/untracked | |
81 | # expect | |
82 | # output | |
83 | # untracked | |
84 | EOF | |
85 | ||
cc6658e7 | 86 | test_expect_success 'status (2)' ' |
68cfc6f5 | 87 | git status >output && |
cc6658e7 | 88 | test_i18ncmp expect output |
367c9886 JS |
89 | ' |
90 | ||
18f3b5a9 MG |
91 | cat >expect <<\EOF |
92 | # On branch master | |
93 | # Changes to be committed: | |
94 | # new file: dir2/added | |
95 | # | |
8009d83c | 96 | # Changes not staged for commit: |
18f3b5a9 MG |
97 | # modified: dir1/modified |
98 | # | |
99 | # Untracked files: | |
100 | # dir1/untracked | |
101 | # dir2/modified | |
102 | # dir2/untracked | |
103 | # expect | |
104 | # output | |
105 | # untracked | |
106 | EOF | |
107 | ||
cc6658e7 JH |
108 | test_expect_success 'status (advice.statusHints false)' ' |
109 | test_when_finished "git config --unset advice.statusHints" && | |
110 | git config advice.statusHints false && | |
18f3b5a9 | 111 | git status >output && |
cc6658e7 | 112 | test_i18ncmp expect output |
18f3b5a9 MG |
113 | |
114 | ' | |
115 | ||
68cfc6f5 | 116 | cat >expect <<\EOF |
14ed05dd MG |
117 | M dir1/modified |
118 | A dir2/added | |
119 | ?? dir1/untracked | |
120 | ?? dir2/modified | |
121 | ?? dir2/untracked | |
122 | ?? expect | |
123 | ?? output | |
124 | ?? untracked | |
125 | EOF | |
126 | ||
46077fa5 | 127 | test_expect_success 'status -s' ' |
14ed05dd | 128 | |
68cfc6f5 | 129 | git status -s >output && |
14ed05dd MG |
130 | test_cmp expect output |
131 | ||
132 | ' | |
133 | ||
150b493a JH |
134 | test_expect_success 'status with gitignore' ' |
135 | { | |
136 | echo ".gitignore" && | |
137 | echo "expect" && | |
138 | echo "output" && | |
139 | echo "untracked" | |
140 | } >.gitignore && | |
141 | ||
142 | cat >expect <<-\EOF && | |
143 | M dir1/modified | |
144 | A dir2/added | |
145 | ?? dir2/modified | |
146 | EOF | |
147 | git status -s >output && | |
148 | test_cmp expect output && | |
149 | ||
150 | cat >expect <<-\EOF && | |
151 | M dir1/modified | |
152 | A dir2/added | |
153 | ?? dir2/modified | |
154 | !! .gitignore | |
155 | !! dir1/untracked | |
156 | !! dir2/untracked | |
157 | !! expect | |
158 | !! output | |
159 | !! untracked | |
160 | EOF | |
161 | git status -s --ignored >output && | |
162 | test_cmp expect output && | |
163 | ||
164 | cat >expect <<-\EOF && | |
165 | # On branch master | |
166 | # Changes to be committed: | |
167 | # (use "git reset HEAD <file>..." to unstage) | |
168 | # | |
169 | # new file: dir2/added | |
170 | # | |
50cebdad | 171 | # Changes not staged for commit: |
150b493a JH |
172 | # (use "git add <file>..." to update what will be committed) |
173 | # (use "git checkout -- <file>..." to discard changes in working directory) | |
174 | # | |
175 | # modified: dir1/modified | |
176 | # | |
177 | # Untracked files: | |
178 | # (use "git add <file>..." to include in what will be committed) | |
179 | # | |
180 | # dir2/modified | |
181 | # Ignored files: | |
182 | # (use "git add -f <file>..." to include in what will be committed) | |
183 | # | |
184 | # .gitignore | |
185 | # dir1/untracked | |
186 | # dir2/untracked | |
187 | # expect | |
188 | # output | |
189 | # untracked | |
190 | EOF | |
191 | git status --ignored >output && | |
ca0f515d | 192 | test_i18ncmp expect output |
150b493a JH |
193 | ' |
194 | ||
195 | test_expect_success 'status with gitignore (nothing untracked)' ' | |
196 | { | |
197 | echo ".gitignore" && | |
198 | echo "expect" && | |
199 | echo "dir2/modified" && | |
200 | echo "output" && | |
201 | echo "untracked" | |
202 | } >.gitignore && | |
203 | ||
204 | cat >expect <<-\EOF && | |
205 | M dir1/modified | |
206 | A dir2/added | |
207 | EOF | |
208 | git status -s >output && | |
209 | test_cmp expect output && | |
210 | ||
211 | cat >expect <<-\EOF && | |
212 | M dir1/modified | |
213 | A dir2/added | |
214 | !! .gitignore | |
215 | !! dir1/untracked | |
216 | !! dir2/modified | |
217 | !! dir2/untracked | |
218 | !! expect | |
219 | !! output | |
220 | !! untracked | |
221 | EOF | |
222 | git status -s --ignored >output && | |
223 | test_cmp expect output && | |
224 | ||
225 | cat >expect <<-\EOF && | |
226 | # On branch master | |
227 | # Changes to be committed: | |
228 | # (use "git reset HEAD <file>..." to unstage) | |
229 | # | |
230 | # new file: dir2/added | |
231 | # | |
50cebdad | 232 | # Changes not staged for commit: |
150b493a JH |
233 | # (use "git add <file>..." to update what will be committed) |
234 | # (use "git checkout -- <file>..." to discard changes in working directory) | |
235 | # | |
236 | # modified: dir1/modified | |
237 | # | |
238 | # Ignored files: | |
239 | # (use "git add -f <file>..." to include in what will be committed) | |
240 | # | |
241 | # .gitignore | |
242 | # dir1/untracked | |
243 | # dir2/modified | |
244 | # dir2/untracked | |
245 | # expect | |
246 | # output | |
247 | # untracked | |
248 | EOF | |
249 | git status --ignored >output && | |
ca0f515d | 250 | test_i18ncmp expect output |
150b493a JH |
251 | ' |
252 | ||
253 | rm -f .gitignore | |
254 | ||
46077fa5 MG |
255 | cat >expect <<\EOF |
256 | ## master | |
257 | M dir1/modified | |
258 | A dir2/added | |
259 | ?? dir1/untracked | |
260 | ?? dir2/modified | |
261 | ?? dir2/untracked | |
262 | ?? expect | |
263 | ?? output | |
264 | ?? untracked | |
265 | EOF | |
266 | ||
267 | test_expect_success 'status -s -b' ' | |
268 | ||
269 | git status -s -b >output && | |
270 | test_cmp expect output | |
271 | ||
272 | ' | |
273 | ||
355ec7a1 ÆAB |
274 | test_expect_success 'setup dir3' ' |
275 | mkdir dir3 && | |
276 | : >dir3/untracked1 && | |
277 | : >dir3/untracked2 | |
278 | ' | |
279 | ||
6c2ce048 MSO |
280 | cat >expect <<EOF |
281 | # On branch master | |
282 | # Changes to be committed: | |
283 | # (use "git reset HEAD <file>..." to unstage) | |
284 | # | |
285 | # new file: dir2/added | |
286 | # | |
8009d83c | 287 | # Changes not staged for commit: |
6c2ce048 | 288 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 289 | # (use "git checkout -- <file>..." to discard changes in working directory) |
6c2ce048 MSO |
290 | # |
291 | # modified: dir1/modified | |
292 | # | |
293 | # Untracked files not listed (use -u option to show untracked files) | |
294 | EOF | |
cc6658e7 | 295 | test_expect_success 'status -uno' ' |
6c2ce048 | 296 | git status -uno >output && |
cc6658e7 | 297 | test_i18ncmp expect output |
6c2ce048 MSO |
298 | ' |
299 | ||
cc6658e7 | 300 | test_expect_success 'status (status.showUntrackedFiles no)' ' |
d6293d1f | 301 | git config status.showuntrackedfiles no |
355ec7a1 | 302 | test_when_finished "git config --unset status.showuntrackedfiles" && |
d6293d1f | 303 | git status >output && |
cc6658e7 | 304 | test_i18ncmp expect output |
d6293d1f MSO |
305 | ' |
306 | ||
18f3b5a9 MG |
307 | cat >expect <<EOF |
308 | # On branch master | |
309 | # Changes to be committed: | |
310 | # new file: dir2/added | |
311 | # | |
8009d83c | 312 | # Changes not staged for commit: |
18f3b5a9 MG |
313 | # modified: dir1/modified |
314 | # | |
980bde38 | 315 | # Untracked files not listed |
18f3b5a9 MG |
316 | EOF |
317 | git config advice.statusHints false | |
cc6658e7 | 318 | test_expect_success 'status -uno (advice.statusHints false)' ' |
18f3b5a9 | 319 | git status -uno >output && |
cc6658e7 | 320 | test_i18ncmp expect output |
18f3b5a9 MG |
321 | ' |
322 | git config --unset advice.statusHints | |
323 | ||
14ed05dd MG |
324 | cat >expect << EOF |
325 | M dir1/modified | |
326 | A dir2/added | |
327 | EOF | |
328 | test_expect_success 'status -s -uno' ' | |
14ed05dd MG |
329 | git status -s -uno >output && |
330 | test_cmp expect output | |
331 | ' | |
332 | ||
333 | test_expect_success 'status -s (status.showUntrackedFiles no)' ' | |
334 | git config status.showuntrackedfiles no | |
335 | git status -s >output && | |
336 | test_cmp expect output | |
337 | ' | |
338 | ||
4bfee30a MSO |
339 | cat >expect <<EOF |
340 | # On branch master | |
341 | # Changes to be committed: | |
342 | # (use "git reset HEAD <file>..." to unstage) | |
343 | # | |
344 | # new file: dir2/added | |
345 | # | |
8009d83c | 346 | # Changes not staged for commit: |
4bfee30a | 347 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 348 | # (use "git checkout -- <file>..." to discard changes in working directory) |
4bfee30a MSO |
349 | # |
350 | # modified: dir1/modified | |
351 | # | |
352 | # Untracked files: | |
353 | # (use "git add <file>..." to include in what will be committed) | |
354 | # | |
355 | # dir1/untracked | |
356 | # dir2/modified | |
357 | # dir2/untracked | |
358 | # dir3/ | |
359 | # expect | |
360 | # output | |
361 | # untracked | |
362 | EOF | |
cc6658e7 | 363 | test_expect_success 'status -unormal' ' |
4bfee30a | 364 | git status -unormal >output && |
cc6658e7 | 365 | test_i18ncmp expect output |
4bfee30a MSO |
366 | ' |
367 | ||
cc6658e7 | 368 | test_expect_success 'status (status.showUntrackedFiles normal)' ' |
d6293d1f | 369 | git config status.showuntrackedfiles normal |
355ec7a1 | 370 | test_when_finished "git config --unset status.showuntrackedfiles" && |
d6293d1f | 371 | git status >output && |
cc6658e7 | 372 | test_i18ncmp expect output |
d6293d1f MSO |
373 | ' |
374 | ||
14ed05dd MG |
375 | cat >expect <<EOF |
376 | M dir1/modified | |
377 | A dir2/added | |
378 | ?? dir1/untracked | |
379 | ?? dir2/modified | |
380 | ?? dir2/untracked | |
381 | ?? dir3/ | |
382 | ?? expect | |
383 | ?? output | |
384 | ?? untracked | |
385 | EOF | |
386 | test_expect_success 'status -s -unormal' ' | |
14ed05dd MG |
387 | git status -s -unormal >output && |
388 | test_cmp expect output | |
389 | ' | |
390 | ||
391 | test_expect_success 'status -s (status.showUntrackedFiles normal)' ' | |
392 | git config status.showuntrackedfiles normal | |
393 | git status -s >output && | |
394 | test_cmp expect output | |
395 | ' | |
396 | ||
4bfee30a MSO |
397 | cat >expect <<EOF |
398 | # On branch master | |
399 | # Changes to be committed: | |
400 | # (use "git reset HEAD <file>..." to unstage) | |
401 | # | |
402 | # new file: dir2/added | |
403 | # | |
8009d83c | 404 | # Changes not staged for commit: |
4bfee30a | 405 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 406 | # (use "git checkout -- <file>..." to discard changes in working directory) |
4bfee30a MSO |
407 | # |
408 | # modified: dir1/modified | |
409 | # | |
410 | # Untracked files: | |
411 | # (use "git add <file>..." to include in what will be committed) | |
412 | # | |
413 | # dir1/untracked | |
414 | # dir2/modified | |
415 | # dir2/untracked | |
416 | # dir3/untracked1 | |
417 | # dir3/untracked2 | |
418 | # expect | |
419 | # output | |
420 | # untracked | |
421 | EOF | |
cc6658e7 | 422 | test_expect_success 'status -uall' ' |
4bfee30a | 423 | git status -uall >output && |
cc6658e7 | 424 | test_i18ncmp expect output |
d6293d1f | 425 | ' |
cc6658e7 JH |
426 | |
427 | test_expect_success 'status (status.showUntrackedFiles all)' ' | |
d6293d1f | 428 | git config status.showuntrackedfiles all |
355ec7a1 | 429 | test_when_finished "git config --unset status.showuntrackedfiles" && |
d6293d1f | 430 | git status >output && |
cc6658e7 | 431 | test_i18ncmp expect output |
4bfee30a MSO |
432 | ' |
433 | ||
355ec7a1 ÆAB |
434 | test_expect_success 'teardown dir3' ' |
435 | rm -rf dir3 | |
436 | ' | |
437 | ||
14ed05dd MG |
438 | cat >expect <<EOF |
439 | M dir1/modified | |
440 | A dir2/added | |
441 | ?? dir1/untracked | |
442 | ?? dir2/modified | |
443 | ?? dir2/untracked | |
444 | ?? expect | |
445 | ?? output | |
446 | ?? untracked | |
447 | EOF | |
448 | test_expect_success 'status -s -uall' ' | |
449 | git config --unset status.showuntrackedfiles | |
450 | git status -s -uall >output && | |
451 | test_cmp expect output | |
452 | ' | |
453 | test_expect_success 'status -s (status.showUntrackedFiles all)' ' | |
454 | git config status.showuntrackedfiles all | |
455 | git status -s >output && | |
456 | rm -rf dir3 && | |
457 | git config --unset status.showuntrackedfiles && | |
458 | test_cmp expect output | |
459 | ' | |
460 | ||
68cfc6f5 | 461 | cat >expect <<\EOF |
367c9886 JS |
462 | # On branch master |
463 | # Changes to be committed: | |
464 | # (use "git reset HEAD <file>..." to unstage) | |
465 | # | |
466 | # new file: ../dir2/added | |
467 | # | |
8009d83c | 468 | # Changes not staged for commit: |
367c9886 | 469 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 470 | # (use "git checkout -- <file>..." to discard changes in working directory) |
367c9886 | 471 | # |
69e74918 | 472 | # modified: modified |
367c9886 JS |
473 | # |
474 | # Untracked files: | |
475 | # (use "git add <file>..." to include in what will be committed) | |
476 | # | |
477 | # untracked | |
478 | # ../dir2/modified | |
479 | # ../dir2/untracked | |
480 | # ../expect | |
481 | # ../output | |
482 | # ../untracked | |
483 | EOF | |
484 | ||
cc6658e7 | 485 | test_expect_success 'status with relative paths' ' |
68cfc6f5 | 486 | (cd dir1 && git status) >output && |
cc6658e7 | 487 | test_i18ncmp expect output |
367c9886 JS |
488 | ' |
489 | ||
68cfc6f5 | 490 | cat >expect <<\EOF |
14ed05dd MG |
491 | M modified |
492 | A ../dir2/added | |
493 | ?? untracked | |
494 | ?? ../dir2/modified | |
495 | ?? ../dir2/untracked | |
496 | ?? ../expect | |
497 | ?? ../output | |
498 | ?? ../untracked | |
499 | EOF | |
500 | test_expect_success 'status -s with relative paths' ' | |
501 | ||
68cfc6f5 | 502 | (cd dir1 && git status -s) >output && |
14ed05dd MG |
503 | test_cmp expect output |
504 | ||
505 | ' | |
506 | ||
68cfc6f5 | 507 | cat >expect <<\EOF |
c521bb71 MG |
508 | M dir1/modified |
509 | A dir2/added | |
510 | ?? dir1/untracked | |
511 | ?? dir2/modified | |
512 | ?? dir2/untracked | |
513 | ?? expect | |
514 | ?? output | |
515 | ?? untracked | |
516 | EOF | |
517 | ||
518 | test_expect_success 'status --porcelain ignores relative paths setting' ' | |
519 | ||
68cfc6f5 | 520 | (cd dir1 && git status --porcelain) >output && |
c521bb71 MG |
521 | test_cmp expect output |
522 | ||
523 | ' | |
524 | ||
68cfc6f5 MG |
525 | test_expect_success 'setup unique colors' ' |
526 | ||
1d282327 AA |
527 | git config status.color.untracked blue && |
528 | git config status.color.branch green | |
68cfc6f5 MG |
529 | |
530 | ' | |
531 | ||
532 | cat >expect <<\EOF | |
1d282327 | 533 | # On branch <GREEN>master<RESET> |
68cfc6f5 MG |
534 | # Changes to be committed: |
535 | # (use "git reset HEAD <file>..." to unstage) | |
536 | # | |
537 | # <GREEN>new file: dir2/added<RESET> | |
538 | # | |
8009d83c | 539 | # Changes not staged for commit: |
68cfc6f5 MG |
540 | # (use "git add <file>..." to update what will be committed) |
541 | # (use "git checkout -- <file>..." to discard changes in working directory) | |
542 | # | |
543 | # <RED>modified: dir1/modified<RESET> | |
544 | # | |
545 | # Untracked files: | |
546 | # (use "git add <file>..." to include in what will be committed) | |
547 | # | |
548 | # <BLUE>dir1/untracked<RESET> | |
549 | # <BLUE>dir2/modified<RESET> | |
550 | # <BLUE>dir2/untracked<RESET> | |
551 | # <BLUE>expect<RESET> | |
552 | # <BLUE>output<RESET> | |
553 | # <BLUE>untracked<RESET> | |
554 | EOF | |
555 | ||
cc6658e7 | 556 | test_expect_success 'status with color.ui' ' |
68cfc6f5 | 557 | git config color.ui always && |
355ec7a1 | 558 | test_when_finished "git config --unset color.ui" && |
68cfc6f5 | 559 | git status | test_decode_color >output && |
cc6658e7 | 560 | test_i18ncmp expect output |
68cfc6f5 MG |
561 | ' |
562 | ||
cc6658e7 | 563 | test_expect_success 'status with color.status' ' |
68cfc6f5 | 564 | git config color.status always && |
355ec7a1 | 565 | test_when_finished "git config --unset color.status" && |
68cfc6f5 | 566 | git status | test_decode_color >output && |
cc6658e7 | 567 | test_i18ncmp expect output |
68cfc6f5 MG |
568 | ' |
569 | ||
570 | cat >expect <<\EOF | |
571 | <RED>M<RESET> dir1/modified | |
572 | <GREEN>A<RESET> dir2/added | |
573 | <BLUE>??<RESET> dir1/untracked | |
574 | <BLUE>??<RESET> dir2/modified | |
575 | <BLUE>??<RESET> dir2/untracked | |
576 | <BLUE>??<RESET> expect | |
577 | <BLUE>??<RESET> output | |
578 | <BLUE>??<RESET> untracked | |
579 | EOF | |
580 | ||
581 | test_expect_success 'status -s with color.ui' ' | |
582 | ||
68cfc6f5 MG |
583 | git config color.ui always && |
584 | git status -s | test_decode_color >output && | |
585 | test_cmp expect output | |
586 | ||
587 | ' | |
588 | ||
589 | test_expect_success 'status -s with color.status' ' | |
590 | ||
591 | git config --unset color.ui && | |
592 | git config color.status always && | |
593 | git status -s | test_decode_color >output && | |
594 | test_cmp expect output | |
595 | ||
596 | ' | |
597 | ||
46077fa5 MG |
598 | cat >expect <<\EOF |
599 | ## <GREEN>master<RESET> | |
600 | <RED>M<RESET> dir1/modified | |
601 | <GREEN>A<RESET> dir2/added | |
602 | <BLUE>??<RESET> dir1/untracked | |
603 | <BLUE>??<RESET> dir2/modified | |
604 | <BLUE>??<RESET> dir2/untracked | |
605 | <BLUE>??<RESET> expect | |
606 | <BLUE>??<RESET> output | |
607 | <BLUE>??<RESET> untracked | |
608 | EOF | |
609 | ||
610 | test_expect_success 'status -s -b with color.status' ' | |
611 | ||
612 | git status -s -b | test_decode_color >output && | |
613 | test_cmp expect output | |
614 | ||
615 | ' | |
616 | ||
68cfc6f5 MG |
617 | cat >expect <<\EOF |
618 | M dir1/modified | |
619 | A dir2/added | |
620 | ?? dir1/untracked | |
621 | ?? dir2/modified | |
622 | ?? dir2/untracked | |
623 | ?? expect | |
624 | ?? output | |
625 | ?? untracked | |
626 | EOF | |
627 | ||
628 | test_expect_success 'status --porcelain ignores color.ui' ' | |
629 | ||
630 | git config --unset color.status && | |
631 | git config color.ui always && | |
632 | git status --porcelain | test_decode_color >output && | |
633 | test_cmp expect output | |
634 | ||
635 | ' | |
636 | ||
637 | test_expect_success 'status --porcelain ignores color.status' ' | |
638 | ||
639 | git config --unset color.ui && | |
640 | git config color.status always && | |
641 | git status --porcelain | test_decode_color >output && | |
642 | test_cmp expect output | |
643 | ||
644 | ' | |
645 | ||
646 | # recover unconditionally from color tests | |
647 | git config --unset color.status | |
648 | git config --unset color.ui | |
649 | ||
46077fa5 MG |
650 | test_expect_success 'status --porcelain ignores -b' ' |
651 | ||
652 | git status --porcelain -b >output && | |
653 | test_cmp expect output | |
654 | ||
655 | ' | |
656 | ||
68cfc6f5 | 657 | cat >expect <<\EOF |
46f721c8 JK |
658 | # On branch master |
659 | # Changes to be committed: | |
660 | # (use "git reset HEAD <file>..." to unstage) | |
661 | # | |
662 | # new file: dir2/added | |
663 | # | |
8009d83c | 664 | # Changes not staged for commit: |
46f721c8 | 665 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 666 | # (use "git checkout -- <file>..." to discard changes in working directory) |
46f721c8 JK |
667 | # |
668 | # modified: dir1/modified | |
669 | # | |
670 | # Untracked files: | |
671 | # (use "git add <file>..." to include in what will be committed) | |
672 | # | |
673 | # dir1/untracked | |
674 | # dir2/modified | |
675 | # dir2/untracked | |
676 | # expect | |
677 | # output | |
678 | # untracked | |
679 | EOF | |
680 | ||
68cfc6f5 | 681 | |
cc6658e7 | 682 | test_expect_success 'status without relative paths' ' |
46f721c8 | 683 | |
355ec7a1 ÆAB |
684 | git config status.relativePaths false && |
685 | test_when_finished "git config --unset status.relativePaths" && | |
68cfc6f5 | 686 | (cd dir1 && git status) >output && |
cc6658e7 | 687 | test_i18ncmp expect output |
46f721c8 JK |
688 | |
689 | ' | |
690 | ||
68cfc6f5 | 691 | cat >expect <<\EOF |
14ed05dd MG |
692 | M dir1/modified |
693 | A dir2/added | |
694 | ?? dir1/untracked | |
695 | ?? dir2/modified | |
696 | ?? dir2/untracked | |
697 | ?? expect | |
698 | ?? output | |
699 | ?? untracked | |
700 | EOF | |
701 | ||
702 | test_expect_success 'status -s without relative paths' ' | |
703 | ||
355ec7a1 ÆAB |
704 | git config status.relativePaths false && |
705 | test_when_finished "git config --unset status.relativePaths" && | |
68cfc6f5 | 706 | (cd dir1 && git status -s) >output && |
14ed05dd MG |
707 | test_cmp expect output |
708 | ||
709 | ' | |
710 | ||
959ba670 JK |
711 | cat <<EOF >expect |
712 | # On branch master | |
713 | # Changes to be committed: | |
714 | # (use "git reset HEAD <file>..." to unstage) | |
715 | # | |
716 | # modified: dir1/modified | |
717 | # | |
718 | # Untracked files: | |
719 | # (use "git add <file>..." to include in what will be committed) | |
720 | # | |
721 | # dir1/untracked | |
722 | # dir2/ | |
723 | # expect | |
724 | # output | |
725 | # untracked | |
726 | EOF | |
9e4b7ab6 | 727 | test_expect_success 'dry-run of partial commit excluding new file in index' ' |
cc6658e7 JH |
728 | git commit --dry-run dir1/modified >output && |
729 | test_i18ncmp expect output | |
959ba670 JK |
730 | ' |
731 | ||
4c926b37 MH |
732 | cat >expect <<EOF |
733 | :100644 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 M dir1/modified | |
734 | EOF | |
4bb6644d | 735 | test_expect_success 'status refreshes the index' ' |
4c926b37 MH |
736 | touch dir2/added && |
737 | git status && | |
738 | git diff-files >output && | |
739 | test_cmp expect output | |
740 | ' | |
741 | ||
e5e4a7f2 PY |
742 | test_expect_success 'setup status submodule summary' ' |
743 | test_create_repo sm && ( | |
744 | cd sm && | |
745 | >foo && | |
746 | git add foo && | |
747 | git commit -m "Add foo" | |
748 | ) && | |
749 | git add sm | |
750 | ' | |
751 | ||
752 | cat >expect <<EOF | |
753 | # On branch master | |
754 | # Changes to be committed: | |
755 | # (use "git reset HEAD <file>..." to unstage) | |
756 | # | |
757 | # new file: dir2/added | |
758 | # new file: sm | |
759 | # | |
8009d83c | 760 | # Changes not staged for commit: |
e5e4a7f2 | 761 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 762 | # (use "git checkout -- <file>..." to discard changes in working directory) |
e5e4a7f2 PY |
763 | # |
764 | # modified: dir1/modified | |
765 | # | |
766 | # Untracked files: | |
767 | # (use "git add <file>..." to include in what will be committed) | |
768 | # | |
769 | # dir1/untracked | |
770 | # dir2/modified | |
771 | # dir2/untracked | |
772 | # expect | |
773 | # output | |
774 | # untracked | |
775 | EOF | |
cc6658e7 | 776 | test_expect_success 'status submodule summary is disabled by default' ' |
e5e4a7f2 | 777 | git status >output && |
cc6658e7 | 778 | test_i18ncmp expect output |
e5e4a7f2 PY |
779 | ' |
780 | ||
98fa4738 | 781 | # we expect the same as the previous test |
cc6658e7 | 782 | test_expect_success 'status --untracked-files=all does not show submodule' ' |
98fa4738 | 783 | git status --untracked-files=all >output && |
cc6658e7 | 784 | test_i18ncmp expect output |
e5e4a7f2 PY |
785 | ' |
786 | ||
14ed05dd MG |
787 | cat >expect <<EOF |
788 | M dir1/modified | |
789 | A dir2/added | |
790 | A sm | |
791 | ?? dir1/untracked | |
792 | ?? dir2/modified | |
793 | ?? dir2/untracked | |
794 | ?? expect | |
795 | ?? output | |
796 | ?? untracked | |
797 | EOF | |
798 | test_expect_success 'status -s submodule summary is disabled by default' ' | |
799 | git status -s >output && | |
800 | test_cmp expect output | |
801 | ' | |
802 | ||
803 | # we expect the same as the previous test | |
804 | test_expect_success 'status -s --untracked-files=all does not show submodule' ' | |
805 | git status -s --untracked-files=all >output && | |
806 | test_cmp expect output | |
807 | ' | |
808 | ||
e5e4a7f2 PY |
809 | head=$(cd sm && git rev-parse --short=7 --verify HEAD) |
810 | ||
811 | cat >expect <<EOF | |
812 | # On branch master | |
813 | # Changes to be committed: | |
814 | # (use "git reset HEAD <file>..." to unstage) | |
815 | # | |
816 | # new file: dir2/added | |
817 | # new file: sm | |
818 | # | |
8009d83c | 819 | # Changes not staged for commit: |
e5e4a7f2 | 820 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 821 | # (use "git checkout -- <file>..." to discard changes in working directory) |
e5e4a7f2 PY |
822 | # |
823 | # modified: dir1/modified | |
824 | # | |
f17a5d34 | 825 | # Submodule changes to be committed: |
e5e4a7f2 PY |
826 | # |
827 | # * sm 0000000...$head (1): | |
828 | # > Add foo | |
829 | # | |
830 | # Untracked files: | |
831 | # (use "git add <file>..." to include in what will be committed) | |
832 | # | |
833 | # dir1/untracked | |
834 | # dir2/modified | |
835 | # dir2/untracked | |
836 | # expect | |
837 | # output | |
838 | # untracked | |
839 | EOF | |
cc6658e7 | 840 | test_expect_success 'status submodule summary' ' |
e5e4a7f2 PY |
841 | git config status.submodulesummary 10 && |
842 | git status >output && | |
cc6658e7 | 843 | test_i18ncmp expect output |
e5e4a7f2 PY |
844 | ' |
845 | ||
14ed05dd MG |
846 | cat >expect <<EOF |
847 | M dir1/modified | |
848 | A dir2/added | |
849 | A sm | |
850 | ?? dir1/untracked | |
851 | ?? dir2/modified | |
852 | ?? dir2/untracked | |
853 | ?? expect | |
854 | ?? output | |
855 | ?? untracked | |
856 | EOF | |
857 | test_expect_success 'status -s submodule summary' ' | |
858 | git status -s >output && | |
859 | test_cmp expect output | |
860 | ' | |
e5e4a7f2 PY |
861 | |
862 | cat >expect <<EOF | |
863 | # On branch master | |
8009d83c | 864 | # Changes not staged for commit: |
e5e4a7f2 | 865 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 866 | # (use "git checkout -- <file>..." to discard changes in working directory) |
e5e4a7f2 PY |
867 | # |
868 | # modified: dir1/modified | |
869 | # | |
870 | # Untracked files: | |
871 | # (use "git add <file>..." to include in what will be committed) | |
872 | # | |
873 | # dir1/untracked | |
874 | # dir2/modified | |
875 | # dir2/untracked | |
876 | # expect | |
877 | # output | |
878 | # untracked | |
879 | no changes added to commit (use "git add" and/or "git commit -a") | |
880 | EOF | |
355ec7a1 | 881 | test_expect_success 'status submodule summary (clean submodule): commit' ' |
cc6658e7 | 882 | git commit -m "commit submodule" && |
e5e4a7f2 | 883 | git config status.submodulesummary 10 && |
9e4b7ab6 | 884 | test_must_fail git commit --dry-run >output && |
cc6658e7 | 885 | test_i18ncmp expect output && |
9e4b7ab6 | 886 | git status >output && |
cc6658e7 | 887 | test_i18ncmp expect output |
e5e4a7f2 PY |
888 | ' |
889 | ||
14ed05dd MG |
890 | cat >expect <<EOF |
891 | M dir1/modified | |
892 | ?? dir1/untracked | |
893 | ?? dir2/modified | |
894 | ?? dir2/untracked | |
895 | ?? expect | |
896 | ?? output | |
897 | ?? untracked | |
898 | EOF | |
899 | test_expect_success 'status -s submodule summary (clean submodule)' ' | |
900 | git status -s >output && | |
901 | test_cmp expect output | |
902 | ' | |
903 | ||
000f97bd | 904 | test_expect_success 'status -z implies porcelain' ' |
95b9f9f9 BC |
905 | git status --porcelain | |
906 | perl -pe "s/\012/\000/g" >expect && | |
907 | git status -z >output && | |
908 | test_cmp expect output | |
909 | ' | |
910 | ||
e5e4a7f2 PY |
911 | cat >expect <<EOF |
912 | # On branch master | |
913 | # Changes to be committed: | |
914 | # (use "git reset HEAD^1 <file>..." to unstage) | |
915 | # | |
916 | # new file: dir2/added | |
917 | # new file: sm | |
918 | # | |
8009d83c | 919 | # Changes not staged for commit: |
e5e4a7f2 | 920 | # (use "git add <file>..." to update what will be committed) |
4d6e4c4d | 921 | # (use "git checkout -- <file>..." to discard changes in working directory) |
e5e4a7f2 PY |
922 | # |
923 | # modified: dir1/modified | |
924 | # | |
f17a5d34 | 925 | # Submodule changes to be committed: |
e5e4a7f2 PY |
926 | # |
927 | # * sm 0000000...$head (1): | |
928 | # > Add foo | |
929 | # | |
930 | # Untracked files: | |
931 | # (use "git add <file>..." to include in what will be committed) | |
932 | # | |
933 | # dir1/untracked | |
934 | # dir2/modified | |
935 | # dir2/untracked | |
936 | # expect | |
937 | # output | |
938 | # untracked | |
939 | EOF | |
cc6658e7 | 940 | test_expect_success 'commit --dry-run submodule summary (--amend)' ' |
e5e4a7f2 | 941 | git config status.submodulesummary 10 && |
9e4b7ab6 | 942 | git commit --dry-run --amend >output && |
cc6658e7 | 943 | test_i18ncmp expect output |
e5e4a7f2 PY |
944 | ' |
945 | ||
c91cfd19 | 946 | test_expect_success POSIXPERM,SANITY 'status succeeds in a read-only repository' ' |
b2f6fd95 MH |
947 | ( |
948 | chmod a-w .git && | |
949 | # make dir1/tracked stat-dirty | |
950 | >dir1/tracked1 && mv -f dir1/tracked1 dir1/tracked && | |
951 | git status -s >output && | |
952 | ! grep dir1/tracked output && | |
953 | # make sure "status" succeeded without writing index out | |
954 | git diff-files | grep dir1/tracked | |
955 | ) | |
956 | status=$? | |
957 | chmod 775 .git | |
958 | (exit $status) | |
959 | ' | |
960 | ||
c2e0940b | 961 | (cd sm && echo > bar && git add bar && git commit -q -m 'Add bar') && git add sm |
aee9c7d6 JL |
962 | new_head=$(cd sm && git rev-parse --short=7 --verify HEAD) |
963 | touch .gitmodules | |
964 | ||
46a958b3 JL |
965 | cat > expect << EOF |
966 | # On branch master | |
aee9c7d6 JL |
967 | # Changes to be committed: |
968 | # (use "git reset HEAD <file>..." to unstage) | |
969 | # | |
970 | # modified: sm | |
971 | # | |
8009d83c | 972 | # Changes not staged for commit: |
46a958b3 JL |
973 | # (use "git add <file>..." to update what will be committed) |
974 | # (use "git checkout -- <file>..." to discard changes in working directory) | |
975 | # | |
976 | # modified: dir1/modified | |
977 | # | |
aee9c7d6 JL |
978 | # Submodule changes to be committed: |
979 | # | |
980 | # * sm $head...$new_head (1): | |
981 | # > Add bar | |
982 | # | |
46a958b3 JL |
983 | # Untracked files: |
984 | # (use "git add <file>..." to include in what will be committed) | |
985 | # | |
aee9c7d6 | 986 | # .gitmodules |
46a958b3 JL |
987 | # dir1/untracked |
988 | # dir2/modified | |
989 | # dir2/untracked | |
990 | # expect | |
991 | # output | |
992 | # untracked | |
46a958b3 JL |
993 | EOF |
994 | ||
cc6658e7 JH |
995 | test_expect_success '--ignore-submodules=untracked suppresses submodules with untracked content' ' |
996 | echo modified sm/untracked && | |
997 | git status --ignore-submodules=untracked >output && | |
998 | test_i18ncmp expect output | |
46a958b3 JL |
999 | ' |
1000 | ||
cc6658e7 | 1001 | test_expect_success '.gitmodules ignore=untracked suppresses submodules with untracked content' ' |
90e14525 JL |
1002 | git config diff.ignoreSubmodules dirty && |
1003 | git status >output && | |
cc6658e7 | 1004 | test_i18ncmp expect output && |
302ad7a9 JL |
1005 | git config --add -f .gitmodules submodule.subname.ignore untracked && |
1006 | git config --add -f .gitmodules submodule.subname.path sm && | |
cc6658e7 JH |
1007 | git status >output && |
1008 | test_i18ncmp expect output && | |
90e14525 JL |
1009 | git config -f .gitmodules --remove-section submodule.subname && |
1010 | git config --unset diff.ignoreSubmodules | |
302ad7a9 JL |
1011 | ' |
1012 | ||
cc6658e7 | 1013 | test_expect_success '.git/config ignore=untracked suppresses submodules with untracked content' ' |
302ad7a9 JL |
1014 | git config --add -f .gitmodules submodule.subname.ignore none && |
1015 | git config --add -f .gitmodules submodule.subname.path sm && | |
aee9c7d6 JL |
1016 | git config --add submodule.subname.ignore untracked && |
1017 | git config --add submodule.subname.path sm && | |
cc6658e7 JH |
1018 | git status >output && |
1019 | test_i18ncmp expect output && | |
302ad7a9 JL |
1020 | git config --remove-section submodule.subname && |
1021 | git config --remove-section -f .gitmodules submodule.subname | |
aee9c7d6 JL |
1022 | ' |
1023 | ||
cc6658e7 JH |
1024 | test_expect_success '--ignore-submodules=dirty suppresses submodules with untracked content' ' |
1025 | git status --ignore-submodules=dirty >output && | |
1026 | test_i18ncmp expect output | |
46a958b3 JL |
1027 | ' |
1028 | ||
cc6658e7 | 1029 | test_expect_success '.gitmodules ignore=dirty suppresses submodules with untracked content' ' |
90e14525 JL |
1030 | git config diff.ignoreSubmodules dirty && |
1031 | git status >output && | |
1032 | ! test -s actual && | |
302ad7a9 JL |
1033 | git config --add -f .gitmodules submodule.subname.ignore dirty && |
1034 | git config --add -f .gitmodules submodule.subname.path sm && | |
cc6658e7 JH |
1035 | git status >output && |
1036 | test_i18ncmp expect output && | |
90e14525 JL |
1037 | git config -f .gitmodules --remove-section submodule.subname && |
1038 | git config --unset diff.ignoreSubmodules | |
302ad7a9 JL |
1039 | ' |
1040 | ||
cc6658e7 | 1041 | test_expect_success '.git/config ignore=dirty suppresses submodules with untracked content' ' |
302ad7a9 JL |
1042 | git config --add -f .gitmodules submodule.subname.ignore none && |
1043 | git config --add -f .gitmodules submodule.subname.path sm && | |
aee9c7d6 JL |
1044 | git config --add submodule.subname.ignore dirty && |
1045 | git config --add submodule.subname.path sm && | |
cc6658e7 JH |
1046 | git status >output && |
1047 | test_i18ncmp expect output && | |
302ad7a9 JL |
1048 | git config --remove-section submodule.subname && |
1049 | git config -f .gitmodules --remove-section submodule.subname | |
aee9c7d6 JL |
1050 | ' |
1051 | ||
cc6658e7 JH |
1052 | test_expect_success '--ignore-submodules=dirty suppresses submodules with modified content' ' |
1053 | echo modified >sm/foo && | |
1054 | git status --ignore-submodules=dirty >output && | |
1055 | test_i18ncmp expect output | |
46a958b3 JL |
1056 | ' |
1057 | ||
cc6658e7 | 1058 | test_expect_success '.gitmodules ignore=dirty suppresses submodules with modified content' ' |
302ad7a9 JL |
1059 | git config --add -f .gitmodules submodule.subname.ignore dirty && |
1060 | git config --add -f .gitmodules submodule.subname.path sm && | |
cc6658e7 JH |
1061 | git status >output && |
1062 | test_i18ncmp expect output && | |
302ad7a9 JL |
1063 | git config -f .gitmodules --remove-section submodule.subname |
1064 | ' | |
1065 | ||
cc6658e7 | 1066 | test_expect_success '.git/config ignore=dirty suppresses submodules with modified content' ' |
302ad7a9 JL |
1067 | git config --add -f .gitmodules submodule.subname.ignore none && |
1068 | git config --add -f .gitmodules submodule.subname.path sm && | |
aee9c7d6 JL |
1069 | git config --add submodule.subname.ignore dirty && |
1070 | git config --add submodule.subname.path sm && | |
cc6658e7 JH |
1071 | git status >output && |
1072 | test_i18ncmp expect output && | |
302ad7a9 JL |
1073 | git config --remove-section submodule.subname && |
1074 | git config -f .gitmodules --remove-section submodule.subname | |
aee9c7d6 JL |
1075 | ' |
1076 | ||
46a958b3 JL |
1077 | cat > expect << EOF |
1078 | # On branch master | |
aee9c7d6 JL |
1079 | # Changes to be committed: |
1080 | # (use "git reset HEAD <file>..." to unstage) | |
1081 | # | |
1082 | # modified: sm | |
1083 | # | |
8009d83c | 1084 | # Changes not staged for commit: |
46a958b3 JL |
1085 | # (use "git add <file>..." to update what will be committed) |
1086 | # (use "git checkout -- <file>..." to discard changes in working directory) | |
1087 | # (commit or discard the untracked or modified content in submodules) | |
1088 | # | |
1089 | # modified: dir1/modified | |
1090 | # modified: sm (modified content) | |
1091 | # | |
aee9c7d6 JL |
1092 | # Submodule changes to be committed: |
1093 | # | |
1094 | # * sm $head...$new_head (1): | |
1095 | # > Add bar | |
1096 | # | |
46a958b3 JL |
1097 | # Untracked files: |
1098 | # (use "git add <file>..." to include in what will be committed) | |
1099 | # | |
aee9c7d6 | 1100 | # .gitmodules |
46a958b3 JL |
1101 | # dir1/untracked |
1102 | # dir2/modified | |
1103 | # dir2/untracked | |
1104 | # expect | |
1105 | # output | |
1106 | # untracked | |
46a958b3 JL |
1107 | EOF |
1108 | ||
cc6658e7 | 1109 | test_expect_success "--ignore-submodules=untracked doesn't suppress submodules with modified content" ' |
46a958b3 | 1110 | git status --ignore-submodules=untracked > output && |
cc6658e7 | 1111 | test_i18ncmp expect output |
46a958b3 JL |
1112 | ' |
1113 | ||
cc6658e7 | 1114 | test_expect_success ".gitmodules ignore=untracked doesn't suppress submodules with modified content" ' |
302ad7a9 JL |
1115 | git config --add -f .gitmodules submodule.subname.ignore untracked && |
1116 | git config --add -f .gitmodules submodule.subname.path sm && | |
cc6658e7 JH |
1117 | git status >output && |
1118 | test_i18ncmp expect output && | |
302ad7a9 JL |
1119 | git config -f .gitmodules --remove-section submodule.subname |
1120 | ' | |
1121 | ||
cc6658e7 | 1122 | test_expect_success ".git/config ignore=untracked doesn't suppress submodules with modified content" ' |
302ad7a9 JL |
1123 | git config --add -f .gitmodules submodule.subname.ignore none && |
1124 | git config --add -f .gitmodules submodule.subname.path sm && | |
aee9c7d6 JL |
1125 | git config --add submodule.subname.ignore untracked && |
1126 | git config --add submodule.subname.path sm && | |
cc6658e7 JH |
1127 | git status >output && |
1128 | test_i18ncmp expect output && | |
302ad7a9 JL |
1129 | git config --remove-section submodule.subname && |
1130 | git config -f .gitmodules --remove-section submodule.subname | |
aee9c7d6 JL |
1131 | ' |
1132 | ||
46a958b3 JL |
1133 | head2=$(cd sm && git commit -q -m "2nd commit" foo && git rev-parse --short=7 --verify HEAD) |
1134 | ||
1135 | cat > expect << EOF | |
1136 | # On branch master | |
aee9c7d6 JL |
1137 | # Changes to be committed: |
1138 | # (use "git reset HEAD <file>..." to unstage) | |
1139 | # | |
1140 | # modified: sm | |
1141 | # | |
8009d83c | 1142 | # Changes not staged for commit: |
46a958b3 JL |
1143 | # (use "git add <file>..." to update what will be committed) |
1144 | # (use "git checkout -- <file>..." to discard changes in working directory) | |
1145 | # | |
1146 | # modified: dir1/modified | |
1147 | # modified: sm (new commits) | |
1148 | # | |
aee9c7d6 JL |
1149 | # Submodule changes to be committed: |
1150 | # | |
1151 | # * sm $head...$new_head (1): | |
1152 | # > Add bar | |
1153 | # | |
46a958b3 JL |
1154 | # Submodules changed but not updated: |
1155 | # | |
aee9c7d6 | 1156 | # * sm $new_head...$head2 (1): |
46a958b3 JL |
1157 | # > 2nd commit |
1158 | # | |
1159 | # Untracked files: | |
1160 | # (use "git add <file>..." to include in what will be committed) | |
1161 | # | |
aee9c7d6 | 1162 | # .gitmodules |
46a958b3 JL |
1163 | # dir1/untracked |
1164 | # dir2/modified | |
1165 | # dir2/untracked | |
1166 | # expect | |
1167 | # output | |
1168 | # untracked | |
46a958b3 JL |
1169 | EOF |
1170 | ||
cc6658e7 | 1171 | test_expect_success "--ignore-submodules=untracked doesn't suppress submodule summary" ' |
46a958b3 | 1172 | git status --ignore-submodules=untracked > output && |
cc6658e7 | 1173 | test_i18ncmp expect output |
46a958b3 JL |
1174 | ' |
1175 | ||
cc6658e7 | 1176 | test_expect_success ".gitmodules ignore=untracked doesn't suppress submodule summary" ' |
302ad7a9 JL |
1177 | git config --add -f .gitmodules submodule.subname.ignore untracked && |
1178 | git config --add -f .gitmodules submodule.subname.path sm && | |
cc6658e7 JH |
1179 | git status >output && |
1180 | test_i18ncmp expect output && | |
302ad7a9 JL |
1181 | git config -f .gitmodules --remove-section submodule.subname |
1182 | ' | |
1183 | ||
cc6658e7 | 1184 | test_expect_success ".git/config ignore=untracked doesn't suppress submodule summary" ' |
302ad7a9 JL |
1185 | git config --add -f .gitmodules submodule.subname.ignore none && |
1186 | git config --add -f .gitmodules submodule.subname.path sm && | |
aee9c7d6 JL |
1187 | git config --add submodule.subname.ignore untracked && |
1188 | git config --add submodule.subname.path sm && | |
cc6658e7 JH |
1189 | git status >output && |
1190 | test_i18ncmp expect output && | |
302ad7a9 JL |
1191 | git config --remove-section submodule.subname && |
1192 | git config -f .gitmodules --remove-section submodule.subname | |
aee9c7d6 JL |
1193 | ' |
1194 | ||
cc6658e7 | 1195 | test_expect_success "--ignore-submodules=dirty doesn't suppress submodule summary" ' |
46a958b3 | 1196 | git status --ignore-submodules=dirty > output && |
cc6658e7 | 1197 | test_i18ncmp expect output |
46a958b3 | 1198 | ' |
cc6658e7 | 1199 | test_expect_success ".gitmodules ignore=dirty doesn't suppress submodule summary" ' |
302ad7a9 JL |
1200 | git config --add -f .gitmodules submodule.subname.ignore dirty && |
1201 | git config --add -f .gitmodules submodule.subname.path sm && | |
cc6658e7 JH |
1202 | git status >output && |
1203 | test_i18ncmp expect output && | |
302ad7a9 JL |
1204 | git config -f .gitmodules --remove-section submodule.subname |
1205 | ' | |
46a958b3 | 1206 | |
cc6658e7 | 1207 | test_expect_success ".git/config ignore=dirty doesn't suppress submodule summary" ' |
302ad7a9 JL |
1208 | git config --add -f .gitmodules submodule.subname.ignore none && |
1209 | git config --add -f .gitmodules submodule.subname.path sm && | |
aee9c7d6 JL |
1210 | git config --add submodule.subname.ignore dirty && |
1211 | git config --add submodule.subname.path sm && | |
cc6658e7 JH |
1212 | git status >output && |
1213 | test_i18ncmp expect output && | |
302ad7a9 JL |
1214 | git config --remove-section submodule.subname && |
1215 | git config -f .gitmodules --remove-section submodule.subname | |
aee9c7d6 JL |
1216 | ' |
1217 | ||
46a958b3 JL |
1218 | cat > expect << EOF |
1219 | # On branch master | |
8009d83c | 1220 | # Changes not staged for commit: |
46a958b3 JL |
1221 | # (use "git add <file>..." to update what will be committed) |
1222 | # (use "git checkout -- <file>..." to discard changes in working directory) | |
1223 | # | |
1224 | # modified: dir1/modified | |
1225 | # | |
1226 | # Untracked files: | |
1227 | # (use "git add <file>..." to include in what will be committed) | |
1228 | # | |
aee9c7d6 | 1229 | # .gitmodules |
46a958b3 JL |
1230 | # dir1/untracked |
1231 | # dir2/modified | |
1232 | # dir2/untracked | |
1233 | # expect | |
1234 | # output | |
1235 | # untracked | |
1236 | no changes added to commit (use "git add" and/or "git commit -a") | |
1237 | EOF | |
1238 | ||
cc6658e7 | 1239 | test_expect_success "--ignore-submodules=all suppresses submodule summary" ' |
46a958b3 | 1240 | git status --ignore-submodules=all > output && |
cc6658e7 | 1241 | test_i18ncmp expect output |
46a958b3 JL |
1242 | ' |
1243 | ||
302ad7a9 JL |
1244 | test_expect_failure '.gitmodules ignore=all suppresses submodule summary' ' |
1245 | git config --add -f .gitmodules submodule.subname.ignore all && | |
1246 | git config --add -f .gitmodules submodule.subname.path sm && | |
1247 | git status > output && | |
1248 | test_cmp expect output && | |
1249 | git config -f .gitmodules --remove-section submodule.subname | |
1250 | ' | |
1251 | ||
aee9c7d6 | 1252 | test_expect_failure '.git/config ignore=all suppresses submodule summary' ' |
302ad7a9 JL |
1253 | git config --add -f .gitmodules submodule.subname.ignore none && |
1254 | git config --add -f .gitmodules submodule.subname.path sm && | |
aee9c7d6 JL |
1255 | git config --add submodule.subname.ignore all && |
1256 | git config --add submodule.subname.path sm && | |
1257 | git status > output && | |
1258 | test_cmp expect output && | |
302ad7a9 JL |
1259 | git config --remove-section submodule.subname && |
1260 | git config -f .gitmodules --remove-section submodule.subname | |
aee9c7d6 JL |
1261 | ' |
1262 | ||
367c9886 | 1263 | test_done |