Code

git-rerere.txt: grammatical fixups and cleanups
[git.git] / t / t7502-status.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2007 Johannes E. Schindelin
4 #
6 test_description='git status'
8 . ./test-lib.sh
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 . &&
21         git status >output &&
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 '
34 test_expect_success 'status (1)' '
36         grep "use \"git rm --cached <file>\.\.\.\" to unstage" output
38 '
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
63 test_expect_success 'status (2)' '
65         git status > output &&
66         test_cmp expect output
68 '
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 '
92 test_expect_success 'status (status.showUntrackedFiles no)' '
93         git config status.showuntrackedfiles no
94         git status >output &&
95         test_cmp expect output
96 '
98 cat >expect <<EOF
99 # On branch master
100 # Changes to be committed:
101 #   (use "git reset HEAD <file>..." to unstage)
103 #       new file:   dir2/added
105 # Changed but not updated:
106 #   (use "git add <file>..." to update what will be committed)
108 #       modified:   dir1/modified
110 # Untracked files:
111 #   (use "git add <file>..." to include in what will be committed)
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
126 test_expect_success 'status (status.showUntrackedFiles normal)' '
127         git config status.showuntrackedfiles normal
128         git status >output &&
129         test_cmp expect output
132 cat >expect <<EOF
133 # On branch master
134 # Changes to be committed:
135 #   (use "git reset HEAD <file>..." to unstage)
137 #       new file:   dir2/added
139 # Changed but not updated:
140 #   (use "git add <file>..." to update what will be committed)
142 #       modified:   dir1/modified
144 # Untracked files:
145 #   (use "git add <file>..." to include in what will be committed)
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
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
168 cat > expect << \EOF
169 # On branch master
170 # Changes to be committed:
171 #   (use "git reset HEAD <file>..." to unstage)
173 #       new file:   ../dir2/added
175 # Changed but not updated:
176 #   (use "git add <file>..." to update what will be committed)
178 #       modified:   modified
180 # Untracked files:
181 #   (use "git add <file>..." to include in what will be committed)
183 #       untracked
184 #       ../dir2/modified
185 #       ../dir2/untracked
186 #       ../expect
187 #       ../output
188 #       ../untracked
189 EOF
191 test_expect_success 'status with relative paths' '
193         (cd dir1 && git status) > output &&
194         test_cmp expect output
198 cat > expect << \EOF
199 # On branch master
200 # Changes to be committed:
201 #   (use "git reset HEAD <file>..." to unstage)
203 #       new file:   dir2/added
205 # Changed but not updated:
206 #   (use "git add <file>..." to update what will be committed)
208 #       modified:   dir1/modified
210 # Untracked files:
211 #   (use "git add <file>..." to include in what will be committed)
213 #       dir1/untracked
214 #       dir2/modified
215 #       dir2/untracked
216 #       expect
217 #       output
218 #       untracked
219 EOF
221 test_expect_success 'status without relative paths' '
223         git config status.relativePaths false
224         (cd dir1 && git status) > output &&
225         test_cmp expect output
229 cat <<EOF >expect
230 # On branch master
231 # Changes to be committed:
232 #   (use "git reset HEAD <file>..." to unstage)
234 #       modified:   dir1/modified
236 # Untracked files:
237 #   (use "git add <file>..." to include in what will be committed)
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
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
260 cat >expect <<EOF
261 # On branch master
262 # Changes to be committed:
263 #   (use "git reset HEAD <file>..." to unstage)
265 #       new file:   dir2/added
266 #       new file:   sm
268 # Changed but not updated:
269 #   (use "git add <file>..." to update what will be committed)
271 #       modified:   dir1/modified
273 # Untracked files:
274 #   (use "git add <file>..." to include in what will be committed)
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
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
294 head=$(cd sm && git rev-parse --short=7 --verify HEAD)
296 cat >expect <<EOF
297 # On branch master
298 # Changes to be committed:
299 #   (use "git reset HEAD <file>..." to unstage)
301 #       new file:   dir2/added
302 #       new file:   sm
304 # Changed but not updated:
305 #   (use "git add <file>..." to update what will be committed)
307 #       modified:   dir1/modified
309 # Modified submodules:
311 # * sm 0000000...$head (1):
312 #   > Add foo
314 # Untracked files:
315 #   (use "git add <file>..." to include in what will be committed)
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
331 cat >expect <<EOF
332 # On branch master
333 # Changed but not updated:
334 #   (use "git add <file>..." to update what will be committed)
336 #       modified:   dir1/modified
338 # Untracked files:
339 #   (use "git add <file>..." to include in what will be committed)
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
356 cat >expect <<EOF
357 # On branch master
358 # Changes to be committed:
359 #   (use "git reset HEAD^1 <file>..." to unstage)
361 #       new file:   dir2/added
362 #       new file:   sm
364 # Changed but not updated:
365 #   (use "git add <file>..." to update what will be committed)
367 #       modified:   dir1/modified
369 # Modified submodules:
371 # * sm 0000000...$head (1):
372 #   > Add foo
374 # Untracked files:
375 #   (use "git add <file>..." to include in what will be committed)
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
390 test_done