]> git.ipfire.org Git - thirdparty/git.git/blob - t/t7502-status.sh
refactor handling of "other" files in ls-files and status
[thirdparty/git.git] / t / t7502-status.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2007 Johannes E. Schindelin
4 #
5
6 test_description='git status'
7
8 . ./test-lib.sh
9
10 test_expect_success 'setup' '
11 : > tracked &&
12 : > modified &&
13 mkdir dir1 &&
14 : > dir1/tracked &&
15 : > dir1/modified &&
16 mkdir dir2 &&
17 : > dir1/tracked &&
18 : > dir1/modified &&
19 git add . &&
20
21 git status >output &&
22
23 test_tick &&
24 git commit -m initial &&
25 : > untracked &&
26 : > dir1/untracked &&
27 : > dir2/untracked &&
28 echo 1 > dir1/modified &&
29 echo 2 > dir2/modified &&
30 echo 3 > dir2/added &&
31 git add dir2/added
32 '
33
34 test_expect_success 'status (1)' '
35
36 grep "use \"git rm --cached <file>\.\.\.\" to unstage" output
37
38 '
39
40 cat > expect << \EOF
41 # On branch master
42 # Changes to be committed:
43 # (use "git reset HEAD <file>..." to unstage)
44 #
45 # new file: dir2/added
46 #
47 # Changed but not updated:
48 # (use "git add <file>..." to update what will be committed)
49 #
50 # modified: dir1/modified
51 #
52 # Untracked files:
53 # (use "git add <file>..." to include in what will be committed)
54 #
55 # dir1/untracked
56 # dir2/modified
57 # dir2/untracked
58 # expect
59 # output
60 # untracked
61 EOF
62
63 test_expect_success 'status (2)' '
64
65 git status > output &&
66 test_cmp expect output
67
68 '
69
70 cat >expect <<EOF
71 # On branch master
72 # Changes to be committed:
73 # (use "git reset HEAD <file>..." to unstage)
74 #
75 # new file: dir2/added
76 #
77 # Changed but not updated:
78 # (use "git add <file>..." to update what will be committed)
79 #
80 # modified: dir1/modified
81 #
82 # Untracked files not listed (use -u option to show untracked files)
83 EOF
84 test_expect_success 'status -uno' '
85 mkdir dir3 &&
86 : > dir3/untracked1 &&
87 : > dir3/untracked2 &&
88 git status -uno >output &&
89 test_cmp expect output
90 '
91
92 test_expect_success 'status (status.showUntrackedFiles no)' '
93 git config status.showuntrackedfiles no
94 git status >output &&
95 test_cmp expect output
96 '
97
98 cat >expect <<EOF
99 # On branch master
100 # Changes to be committed:
101 # (use "git reset HEAD <file>..." to unstage)
102 #
103 # new file: dir2/added
104 #
105 # Changed but not updated:
106 # (use "git add <file>..." to update what will be committed)
107 #
108 # modified: dir1/modified
109 #
110 # Untracked files:
111 # (use "git add <file>..." to include in what will be committed)
112 #
113 # dir1/untracked
114 # dir2/modified
115 # dir2/untracked
116 # dir3/
117 # expect
118 # output
119 # untracked
120 EOF
121 test_expect_success 'status -unormal' '
122 git status -unormal >output &&
123 test_cmp expect output
124 '
125
126 test_expect_success 'status (status.showUntrackedFiles normal)' '
127 git config status.showuntrackedfiles normal
128 git status >output &&
129 test_cmp expect output
130 '
131
132 cat >expect <<EOF
133 # On branch master
134 # Changes to be committed:
135 # (use "git reset HEAD <file>..." to unstage)
136 #
137 # new file: dir2/added
138 #
139 # Changed but not updated:
140 # (use "git add <file>..." to update what will be committed)
141 #
142 # modified: dir1/modified
143 #
144 # Untracked files:
145 # (use "git add <file>..." to include in what will be committed)
146 #
147 # dir1/untracked
148 # dir2/modified
149 # dir2/untracked
150 # dir3/untracked1
151 # dir3/untracked2
152 # expect
153 # output
154 # untracked
155 EOF
156 test_expect_success 'status -uall' '
157 git status -uall >output &&
158 test_cmp expect output
159 '
160 test_expect_success 'status (status.showUntrackedFiles all)' '
161 git config status.showuntrackedfiles all
162 git status >output &&
163 rm -rf dir3 &&
164 git config --unset status.showuntrackedfiles &&
165 test_cmp expect output
166 '
167
168 cat > expect << \EOF
169 # On branch master
170 # Changes to be committed:
171 # (use "git reset HEAD <file>..." to unstage)
172 #
173 # new file: ../dir2/added
174 #
175 # Changed but not updated:
176 # (use "git add <file>..." to update what will be committed)
177 #
178 # modified: modified
179 #
180 # Untracked files:
181 # (use "git add <file>..." to include in what will be committed)
182 #
183 # untracked
184 # ../dir2/modified
185 # ../dir2/untracked
186 # ../expect
187 # ../output
188 # ../untracked
189 EOF
190
191 test_expect_success 'status with relative paths' '
192
193 (cd dir1 && git status) > output &&
194 test_cmp expect output
195
196 '
197
198 cat > expect << \EOF
199 # On branch master
200 # Changes to be committed:
201 # (use "git reset HEAD <file>..." to unstage)
202 #
203 # new file: dir2/added
204 #
205 # Changed but not updated:
206 # (use "git add <file>..." to update what will be committed)
207 #
208 # modified: dir1/modified
209 #
210 # Untracked files:
211 # (use "git add <file>..." to include in what will be committed)
212 #
213 # dir1/untracked
214 # dir2/modified
215 # dir2/untracked
216 # expect
217 # output
218 # untracked
219 EOF
220
221 test_expect_success 'status without relative paths' '
222
223 git config status.relativePaths false
224 (cd dir1 && git status) > output &&
225 test_cmp expect output
226
227 '
228
229 cat <<EOF >expect
230 # On branch master
231 # Changes to be committed:
232 # (use "git reset HEAD <file>..." to unstage)
233 #
234 # modified: dir1/modified
235 #
236 # Untracked files:
237 # (use "git add <file>..." to include in what will be committed)
238 #
239 # dir1/untracked
240 # dir2/
241 # expect
242 # output
243 # untracked
244 EOF
245 test_expect_success 'status of partial commit excluding new file in index' '
246 git status dir1/modified >output &&
247 test_cmp expect output
248 '
249
250 test_expect_success 'setup status submodule summary' '
251 test_create_repo sm && (
252 cd sm &&
253 >foo &&
254 git add foo &&
255 git commit -m "Add foo"
256 ) &&
257 git add sm
258 '
259
260 cat >expect <<EOF
261 # On branch master
262 # Changes to be committed:
263 # (use "git reset HEAD <file>..." to unstage)
264 #
265 # new file: dir2/added
266 # new file: sm
267 #
268 # Changed but not updated:
269 # (use "git add <file>..." to update what will be committed)
270 #
271 # modified: dir1/modified
272 #
273 # Untracked files:
274 # (use "git add <file>..." to include in what will be committed)
275 #
276 # dir1/untracked
277 # dir2/modified
278 # dir2/untracked
279 # expect
280 # output
281 # untracked
282 EOF
283 test_expect_success 'status submodule summary is disabled by default' '
284 git status >output &&
285 test_cmp expect output
286 '
287
288 # we expect the same as the previous test
289 test_expect_success 'status --untracked-files=all does not show submodule' '
290 git status --untracked-files=all >output &&
291 test_cmp expect output
292 '
293
294 head=$(cd sm && git rev-parse --short=7 --verify HEAD)
295
296 cat >expect <<EOF
297 # On branch master
298 # Changes to be committed:
299 # (use "git reset HEAD <file>..." to unstage)
300 #
301 # new file: dir2/added
302 # new file: sm
303 #
304 # Changed but not updated:
305 # (use "git add <file>..." to update what will be committed)
306 #
307 # modified: dir1/modified
308 #
309 # Modified submodules:
310 #
311 # * sm 0000000...$head (1):
312 # > Add foo
313 #
314 # Untracked files:
315 # (use "git add <file>..." to include in what will be committed)
316 #
317 # dir1/untracked
318 # dir2/modified
319 # dir2/untracked
320 # expect
321 # output
322 # untracked
323 EOF
324 test_expect_success 'status submodule summary' '
325 git config status.submodulesummary 10 &&
326 git status >output &&
327 test_cmp expect output
328 '
329
330
331 cat >expect <<EOF
332 # On branch master
333 # Changed but not updated:
334 # (use "git add <file>..." to update what will be committed)
335 #
336 # modified: dir1/modified
337 #
338 # Untracked files:
339 # (use "git add <file>..." to include in what will be committed)
340 #
341 # dir1/untracked
342 # dir2/modified
343 # dir2/untracked
344 # expect
345 # output
346 # untracked
347 no changes added to commit (use "git add" and/or "git commit -a")
348 EOF
349 test_expect_success 'status submodule summary (clean submodule)' '
350 git commit -m "commit submodule" &&
351 git config status.submodulesummary 10 &&
352 test_must_fail git status >output &&
353 test_cmp expect output
354 '
355
356 cat >expect <<EOF
357 # On branch master
358 # Changes to be committed:
359 # (use "git reset HEAD^1 <file>..." to unstage)
360 #
361 # new file: dir2/added
362 # new file: sm
363 #
364 # Changed but not updated:
365 # (use "git add <file>..." to update what will be committed)
366 #
367 # modified: dir1/modified
368 #
369 # Modified submodules:
370 #
371 # * sm 0000000...$head (1):
372 # > Add foo
373 #
374 # Untracked files:
375 # (use "git add <file>..." to include in what will be committed)
376 #
377 # dir1/untracked
378 # dir2/modified
379 # dir2/untracked
380 # expect
381 # output
382 # untracked
383 EOF
384 test_expect_success 'status submodule summary (--amend)' '
385 git config status.submodulesummary 10 &&
386 git status --amend >output &&
387 test_cmp expect output
388 '
389
390 test_done