Code

builtin-status: Add tests for submodule summary
[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         git diff 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:   modified
81 #
82 # Untracked files:
83 #   (use "git add <file>..." to include in what will be committed)
84 #
85 #       untracked
86 #       ../dir2/modified
87 #       ../dir2/untracked
88 #       ../expect
89 #       ../output
90 #       ../untracked
91 EOF
93 test_expect_success 'status with relative paths' '
95         (cd dir1 && git status) > output &&
96         git diff expect output
98 '
100 cat > expect << \EOF
101 # On branch master
102 # Changes to be committed:
103 #   (use "git reset HEAD <file>..." to unstage)
105 #       new file:   dir2/added
107 # Changed but not updated:
108 #   (use "git add <file>..." to update what will be committed)
110 #       modified:   dir1/modified
112 # Untracked files:
113 #   (use "git add <file>..." to include in what will be committed)
115 #       dir1/untracked
116 #       dir2/modified
117 #       dir2/untracked
118 #       expect
119 #       output
120 #       untracked
121 EOF
123 test_expect_success 'status without relative paths' '
125         git config status.relativePaths false
126         (cd dir1 && git status) > output &&
127         git diff expect output
131 cat <<EOF >expect
132 # On branch master
133 # Changes to be committed:
134 #   (use "git reset HEAD <file>..." to unstage)
136 #       modified:   dir1/modified
138 # Untracked files:
139 #   (use "git add <file>..." to include in what will be committed)
141 #       dir1/untracked
142 #       dir2/
143 #       expect
144 #       output
145 #       untracked
146 EOF
147 test_expect_success 'status of partial commit excluding new file in index' '
148         git status dir1/modified >output &&
149         test_cmp expect output
152 test_expect_success 'setup status submodule summary' '
153         test_create_repo sm && (
154                 cd sm &&
155                 >foo &&
156                 git add foo &&
157                 git commit -m "Add foo"
158         ) &&
159         git add sm
162 cat >expect <<EOF
163 # On branch master
164 # Changes to be committed:
165 #   (use "git reset HEAD <file>..." to unstage)
167 #       new file:   dir2/added
168 #       new file:   sm
170 # Changed but not updated:
171 #   (use "git add <file>..." to update what will be committed)
173 #       modified:   dir1/modified
175 # Untracked files:
176 #   (use "git add <file>..." to include in what will be committed)
178 #       dir1/untracked
179 #       dir2/modified
180 #       dir2/untracked
181 #       expect
182 #       output
183 #       untracked
184 EOF
185 test_expect_success 'status submodule summary is disabled by default' '
186         git status >output &&
187         test_cmp expect output
190 head=$(cd sm && git rev-parse --short=7 --verify HEAD)
192 cat >expect <<EOF
193 # On branch master
194 # Changes to be committed:
195 #   (use "git reset HEAD <file>..." to unstage)
197 #       new file:   dir2/added
198 #       new file:   sm
200 # Changed but not updated:
201 #   (use "git add <file>..." to update what will be committed)
203 #       modified:   dir1/modified
205 # Modified submodules:
207 # * sm 0000000...$head (1):
208 #   > Add foo
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
220 test_expect_success 'status submodule summary' '
221         git config status.submodulesummary 10 &&
222         git status >output &&
223         test_cmp expect output
227 cat >expect <<EOF
228 # On branch master
229 # Changed but not updated:
230 #   (use "git add <file>..." to update what will be committed)
232 #       modified:   dir1/modified
234 # Untracked files:
235 #   (use "git add <file>..." to include in what will be committed)
237 #       dir1/untracked
238 #       dir2/modified
239 #       dir2/untracked
240 #       expect
241 #       output
242 #       untracked
243 no changes added to commit (use "git add" and/or "git commit -a")
244 EOF
245 test_expect_success 'status submodule summary (clean submodule)' '
246         git commit -m "commit submodule" &&
247         git config status.submodulesummary 10 &&
248         test_must_fail git status >output &&
249         test_cmp expect output
252 cat >expect <<EOF
253 # On branch master
254 # Changes to be committed:
255 #   (use "git reset HEAD^1 <file>..." to unstage)
257 #       new file:   dir2/added
258 #       new file:   sm
260 # Changed but not updated:
261 #   (use "git add <file>..." to update what will be committed)
263 #       modified:   dir1/modified
265 # Modified submodules:
267 # * sm 0000000...$head (1):
268 #   > Add foo
270 # Untracked files:
271 #   (use "git add <file>..." to include in what will be committed)
273 #       dir1/untracked
274 #       dir2/modified
275 #       dir2/untracked
276 #       expect
277 #       output
278 #       untracked
279 EOF
280 test_expect_success 'status submodule summary (--amend)' '
281         git config status.submodulesummary 10 &&
282         git status --amend >output &&
283         test_cmp expect output
286 test_done