git-status: Test --ignored behavior

Test all possible use-cases of git-status "--ignored" with the "--untracked-files" option with values "normal" and "all": - An untracked directory is listed as untracked if it has a mix of untracked and ignored files in it. With -uall, ignored/untracked files are listed as ignored/untracked. - An untracked directory with only ignored files is listed as ignored. With -uall, all files in the directory are listed. - An ignored directory is listed as ignored. With -uall, all files in the directory are listed as ignored. - An ignored and committed directory is listed as ignored if it has untracked files. With -uall, all untracked files in the directory are listed as ignored. Signed-off-by: Antoine Pelisse <apelisse@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Antoine Pelisse committed Dec 30, 2012 at 15:39 UTC eb8c5b872ef144add4ac89f85bcddc974ac7114d
1 file changed +146
t/t7061-wtstatus-ignore.sh new
+146
@@ -0,0 +1,146 @@
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 +EOF
13 +
14 +test_expect_success 'status untracked directory with --ignored' '
15 + echo "ignored" >.gitignore &&
16 + mkdir untracked &&
17 + : >untracked/ignored &&
18 + : >untracked/uncommitted &&
19 + git status --porcelain --ignored >actual &&
20 + test_cmp expected actual
21 +'
22 +
23 +cat >expected <<\EOF
24 +?? .gitignore
25 +?? actual
26 +?? expected
27 +?? untracked/uncommitted
28 +!! untracked/ignored
29 +EOF
30 +
31 +test_expect_success 'status untracked directory with --ignored -u' '
32 + git status --porcelain --ignored -u >actual &&
33 + test_cmp expected actual
34 +'
35 +
36 +cat >expected <<\EOF
37 +?? .gitignore
38 +?? actual
39 +?? expected
40 +!! ignored/
41 +EOF
42 +
43 +test_expect_success 'status ignored directory with --ignore' '
44 + rm -rf untracked &&
45 + mkdir ignored &&
46 + : >ignored/uncommitted &&
47 + git status --porcelain --ignored >actual &&
48 + test_cmp expected actual
49 +'
50 +
51 +cat >expected <<\EOF
52 +?? .gitignore
53 +?? actual
54 +?? expected
55 +!! ignored/uncommitted
56 +EOF
57 +
58 +test_expect_success 'status ignored directory with --ignore -u' '
59 + git status --porcelain --ignored -u >actual &&
60 + test_cmp expected actual
61 +'
62 +
63 +cat >expected <<\EOF
64 +?? .gitignore
65 +?? actual
66 +?? expected
67 +!! untracked-ignored/
68 +EOF
69 +
70 +test_expect_success 'status untracked directory with ignored files with --ignore' '
71 + rm -rf ignored &&
72 + mkdir untracked-ignored &&
73 + mkdir untracked-ignored/test &&
74 + : >untracked-ignored/ignored &&
75 + : >untracked-ignored/test/ignored &&
76 + git status --porcelain --ignored >actual &&
77 + test_cmp expected actual
78 +'
79 +
80 +cat >expected <<\EOF
81 +?? .gitignore
82 +?? actual
83 +?? expected
84 +!! untracked-ignored/ignored
85 +!! untracked-ignored/test/ignored
86 +EOF
87 +
88 +test_expect_success 'status untracked directory with ignored files with --ignore -u' '
89 + git status --porcelain --ignored -u >actual &&
90 + test_cmp expected actual
91 +'
92 +
93 +cat >expected <<\EOF
94 +?? .gitignore
95 +?? actual
96 +?? expected
97 +EOF
98 +
99 +test_expect_success 'status ignored tracked directory with --ignore' '
100 + rm -rf untracked-ignored &&
101 + mkdir tracked &&
102 + : >tracked/committed &&
103 + git add tracked/committed &&
104 + git commit -m. &&
105 + echo "tracked" >.gitignore &&
106 + git status --porcelain --ignored >actual &&
107 + test_cmp expected actual
108 +'
109 +
110 +cat >expected <<\EOF
111 +?? .gitignore
112 +?? actual
113 +?? expected
114 +EOF
115 +
116 +test_expect_success 'status ignored tracked directory with --ignore -u' '
117 + git status --porcelain --ignored -u >actual &&
118 + test_cmp expected actual
119 +'
120 +
121 +cat >expected <<\EOF
122 +?? .gitignore
123 +?? actual
124 +?? expected
125 +!! tracked/
126 +EOF
127 +
128 +test_expect_success 'status ignored tracked directory and uncommitted file with --ignore' '
129 + : >tracked/uncommitted &&
130 + git status --porcelain --ignored >actual &&
131 + test_cmp expected actual
132 +'
133 +
134 +cat >expected <<\EOF
135 +?? .gitignore
136 +?? actual
137 +?? expected
138 +!! tracked/uncommitted
139 +EOF
140 +
141 +test_expect_success 'status ignored tracked directory and uncommitted file with --ignore -u' '
142 + git status --porcelain --ignored -u >actual &&
143 + test_cmp expected actual
144 +'
145 +
146 +test_done