]>
Commit | Line | Data |
---|---|---|
70819263 LK |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2012 Valentin Duperray, Lucien Kong, Franck Jonas, | |
4 | # Thomas Nguy, Khoi Nguyen | |
5 | # Grenoble INP Ensimag | |
6 | # | |
7 | ||
4f021b34 | 8 | test_description='git status advice' |
70819263 LK |
9 | |
10 | . ./test-lib.sh | |
11 | ||
12 | . "$TEST_DIRECTORY"/lib-rebase.sh | |
13 | ||
14 | set_fake_editor | |
15 | ||
16 | test_expect_success 'prepare for conflicts' ' | |
6a38ef2c | 17 | git config --global advice.statusuoption false && |
70819263 LK |
18 | test_commit init main.txt init && |
19 | git branch conflicts && | |
20 | test_commit on_master main.txt on_master && | |
21 | git checkout conflicts && | |
22 | test_commit on_conflicts main.txt on_conflicts | |
23 | ' | |
24 | ||
25 | ||
26 | test_expect_success 'status when conflicts unresolved' ' | |
27 | test_must_fail git merge master && | |
1c7969c9 MM |
28 | cat >expected <<\EOF && |
29 | On branch conflicts | |
30 | You have unmerged paths. | |
31 | (fix conflicts and run "git commit") | |
32 | ||
33 | Unmerged paths: | |
34 | (use "git add <file>..." to mark resolution) | |
35 | ||
36 | both modified: main.txt | |
37 | ||
38 | no changes added to commit (use "git add" and/or "git commit -a") | |
39 | EOF | |
70819263 LK |
40 | git status --untracked-files=no >actual && |
41 | test_i18ncmp expected actual | |
42 | ' | |
43 | ||
44 | ||
45 | test_expect_success 'status when conflicts resolved before commit' ' | |
46 | git reset --hard conflicts && | |
47 | test_must_fail git merge master && | |
48 | echo one >main.txt && | |
49 | git add main.txt && | |
1c7969c9 MM |
50 | cat >expected <<\EOF && |
51 | On branch conflicts | |
52 | All conflicts fixed but you are still merging. | |
53 | (use "git commit" to conclude merge) | |
54 | ||
55 | Changes to be committed: | |
56 | ||
57 | modified: main.txt | |
58 | ||
59 | Untracked files not listed (use -u option to show untracked files) | |
60 | EOF | |
70819263 LK |
61 | git status --untracked-files=no >actual && |
62 | test_i18ncmp expected actual | |
63 | ' | |
64 | ||
65 | ||
66 | test_expect_success 'prepare for rebase conflicts' ' | |
67 | git reset --hard master && | |
68 | git checkout -b rebase_conflicts && | |
69 | test_commit one_rebase main.txt one && | |
70 | test_commit two_rebase main.txt two && | |
71 | test_commit three_rebase main.txt three | |
72 | ' | |
73 | ||
74 | ||
75 | test_expect_success 'status when rebase in progress before resolving conflicts' ' | |
76 | test_when_finished "git rebase --abort" && | |
0722c805 | 77 | ONTO=$(git rev-parse --short HEAD^^) && |
70819263 | 78 | test_must_fail git rebase HEAD^ --onto HEAD^^ && |
1c7969c9 MM |
79 | cat >expected <<EOF && |
80 | rebase in progress; onto $ONTO | |
81 | You are currently rebasing branch '\''rebase_conflicts'\'' on '\''$ONTO'\''. | |
82 | (fix conflicts and then run "git rebase --continue") | |
83 | (use "git rebase --skip" to skip this patch) | |
84 | (use "git rebase --abort" to check out the original branch) | |
85 | ||
86 | Unmerged paths: | |
87 | (use "git reset HEAD <file>..." to unstage) | |
88 | (use "git add <file>..." to mark resolution) | |
89 | ||
90 | both modified: main.txt | |
91 | ||
92 | no changes added to commit (use "git add" and/or "git commit -a") | |
93 | EOF | |
70819263 LK |
94 | git status --untracked-files=no >actual && |
95 | test_i18ncmp expected actual | |
96 | ' | |
97 | ||
98 | ||
99 | test_expect_success 'status when rebase in progress before rebase --continue' ' | |
100 | git reset --hard rebase_conflicts && | |
101 | test_when_finished "git rebase --abort" && | |
0722c805 | 102 | ONTO=$(git rev-parse --short HEAD^^) && |
70819263 LK |
103 | test_must_fail git rebase HEAD^ --onto HEAD^^ && |
104 | echo three >main.txt && | |
105 | git add main.txt && | |
1c7969c9 MM |
106 | cat >expected <<EOF && |
107 | rebase in progress; onto $ONTO | |
108 | You are currently rebasing branch '\''rebase_conflicts'\'' on '\''$ONTO'\''. | |
109 | (all conflicts fixed: run "git rebase --continue") | |
110 | ||
111 | Changes to be committed: | |
112 | (use "git reset HEAD <file>..." to unstage) | |
113 | ||
114 | modified: main.txt | |
115 | ||
116 | Untracked files not listed (use -u option to show untracked files) | |
117 | EOF | |
70819263 LK |
118 | git status --untracked-files=no >actual && |
119 | test_i18ncmp expected actual | |
120 | ' | |
121 | ||
122 | ||
123 | test_expect_success 'prepare for rebase_i_conflicts' ' | |
124 | git reset --hard master && | |
125 | git checkout -b rebase_i_conflicts && | |
126 | test_commit one_unmerge main.txt one_unmerge && | |
127 | git branch rebase_i_conflicts_second && | |
128 | test_commit one_master main.txt one_master && | |
129 | git checkout rebase_i_conflicts_second && | |
130 | test_commit one_second main.txt one_second | |
131 | ' | |
132 | ||
133 | ||
134 | test_expect_success 'status during rebase -i when conflicts unresolved' ' | |
135 | test_when_finished "git rebase --abort" && | |
0722c805 | 136 | ONTO=$(git rev-parse --short rebase_i_conflicts) && |
70819263 | 137 | test_must_fail git rebase -i rebase_i_conflicts && |
1c7969c9 MM |
138 | cat >expected <<EOF && |
139 | rebase in progress; onto $ONTO | |
140 | You are currently rebasing branch '\''rebase_i_conflicts_second'\'' on '\''$ONTO'\''. | |
141 | (fix conflicts and then run "git rebase --continue") | |
142 | (use "git rebase --skip" to skip this patch) | |
143 | (use "git rebase --abort" to check out the original branch) | |
144 | ||
145 | Unmerged paths: | |
146 | (use "git reset HEAD <file>..." to unstage) | |
147 | (use "git add <file>..." to mark resolution) | |
148 | ||
149 | both modified: main.txt | |
150 | ||
151 | no changes added to commit (use "git add" and/or "git commit -a") | |
152 | EOF | |
70819263 LK |
153 | git status --untracked-files=no >actual && |
154 | test_i18ncmp expected actual | |
155 | ' | |
156 | ||
157 | ||
158 | test_expect_success 'status during rebase -i after resolving conflicts' ' | |
159 | git reset --hard rebase_i_conflicts_second && | |
160 | test_when_finished "git rebase --abort" && | |
0722c805 | 161 | ONTO=$(git rev-parse --short rebase_i_conflicts) && |
70819263 LK |
162 | test_must_fail git rebase -i rebase_i_conflicts && |
163 | git add main.txt && | |
1c7969c9 MM |
164 | cat >expected <<EOF && |
165 | rebase in progress; onto $ONTO | |
166 | You are currently rebasing branch '\''rebase_i_conflicts_second'\'' on '\''$ONTO'\''. | |
167 | (all conflicts fixed: run "git rebase --continue") | |
168 | ||
169 | Changes to be committed: | |
170 | (use "git reset HEAD <file>..." to unstage) | |
171 | ||
172 | modified: main.txt | |
173 | ||
174 | Untracked files not listed (use -u option to show untracked files) | |
175 | EOF | |
70819263 LK |
176 | git status --untracked-files=no >actual && |
177 | test_i18ncmp expected actual | |
178 | ' | |
179 | ||
180 | ||
181 | test_expect_success 'status when rebasing -i in edit mode' ' | |
182 | git reset --hard master && | |
183 | git checkout -b rebase_i_edit && | |
184 | test_commit one_rebase_i main.txt one && | |
185 | test_commit two_rebase_i main.txt two && | |
186 | test_commit three_rebase_i main.txt three && | |
187 | FAKE_LINES="1 edit 2" && | |
188 | export FAKE_LINES && | |
189 | test_when_finished "git rebase --abort" && | |
0722c805 | 190 | ONTO=$(git rev-parse --short HEAD~2) && |
70819263 | 191 | git rebase -i HEAD~2 && |
1c7969c9 MM |
192 | cat >expected <<EOF && |
193 | rebase in progress; onto $ONTO | |
194 | You are currently editing a commit while rebasing branch '\''rebase_i_edit'\'' on '\''$ONTO'\''. | |
195 | (use "git commit --amend" to amend the current commit) | |
196 | (use "git rebase --continue" once you are satisfied with your changes) | |
197 | ||
198 | nothing to commit (use -u to show untracked files) | |
199 | EOF | |
70819263 LK |
200 | git status --untracked-files=no >actual && |
201 | test_i18ncmp expected actual | |
202 | ' | |
203 | ||
204 | ||
2d1cceba LK |
205 | test_expect_success 'status when splitting a commit' ' |
206 | git reset --hard master && | |
207 | git checkout -b split_commit && | |
208 | test_commit one_split main.txt one && | |
209 | test_commit two_split main.txt two && | |
210 | test_commit three_split main.txt three && | |
211 | test_commit four_split main.txt four && | |
212 | FAKE_LINES="1 edit 2 3" && | |
213 | export FAKE_LINES && | |
214 | test_when_finished "git rebase --abort" && | |
0722c805 | 215 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
216 | git rebase -i HEAD~3 && |
217 | git reset HEAD^ && | |
1c7969c9 MM |
218 | cat >expected <<EOF && |
219 | rebase in progress; onto $ONTO | |
220 | You are currently splitting a commit while rebasing branch '\''split_commit'\'' on '\''$ONTO'\''. | |
221 | (Once your working directory is clean, run "git rebase --continue") | |
222 | ||
223 | Changes not staged for commit: | |
224 | (use "git add <file>..." to update what will be committed) | |
225 | (use "git checkout -- <file>..." to discard changes in working directory) | |
226 | ||
227 | modified: main.txt | |
228 | ||
229 | no changes added to commit (use "git add" and/or "git commit -a") | |
230 | EOF | |
2d1cceba LK |
231 | git status --untracked-files=no >actual && |
232 | test_i18ncmp expected actual | |
233 | ' | |
234 | ||
235 | ||
236 | test_expect_success 'status after editing the last commit with --amend during a rebase -i' ' | |
237 | git reset --hard master && | |
238 | git checkout -b amend_last && | |
239 | test_commit one_amend main.txt one && | |
240 | test_commit two_amend main.txt two && | |
241 | test_commit three_amend main.txt three && | |
242 | test_commit four_amend main.txt four && | |
243 | FAKE_LINES="1 2 edit 3" && | |
244 | export FAKE_LINES && | |
245 | test_when_finished "git rebase --abort" && | |
0722c805 | 246 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
247 | git rebase -i HEAD~3 && |
248 | git commit --amend -m "foo" && | |
1c7969c9 MM |
249 | cat >expected <<EOF && |
250 | rebase in progress; onto $ONTO | |
251 | You are currently editing a commit while rebasing branch '\''amend_last'\'' on '\''$ONTO'\''. | |
252 | (use "git commit --amend" to amend the current commit) | |
253 | (use "git rebase --continue" once you are satisfied with your changes) | |
254 | ||
255 | nothing to commit (use -u to show untracked files) | |
256 | EOF | |
2d1cceba LK |
257 | git status --untracked-files=no >actual && |
258 | test_i18ncmp expected actual | |
259 | ' | |
260 | ||
261 | ||
262 | test_expect_success 'prepare for several edits' ' | |
263 | git reset --hard master && | |
264 | git checkout -b several_edits && | |
265 | test_commit one_edits main.txt one && | |
266 | test_commit two_edits main.txt two && | |
267 | test_commit three_edits main.txt three && | |
268 | test_commit four_edits main.txt four | |
269 | ' | |
270 | ||
271 | ||
272 | test_expect_success 'status: (continue first edit) second edit' ' | |
273 | FAKE_LINES="edit 1 edit 2 3" && | |
274 | export FAKE_LINES && | |
275 | test_when_finished "git rebase --abort" && | |
0722c805 | 276 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
277 | git rebase -i HEAD~3 && |
278 | git rebase --continue && | |
1c7969c9 MM |
279 | cat >expected <<EOF && |
280 | rebase in progress; onto $ONTO | |
281 | You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
282 | (use "git commit --amend" to amend the current commit) | |
283 | (use "git rebase --continue" once you are satisfied with your changes) | |
284 | ||
285 | nothing to commit (use -u to show untracked files) | |
286 | EOF | |
2d1cceba LK |
287 | git status --untracked-files=no >actual && |
288 | test_i18ncmp expected actual | |
289 | ' | |
290 | ||
291 | ||
292 | test_expect_success 'status: (continue first edit) second edit and split' ' | |
293 | git reset --hard several_edits && | |
294 | FAKE_LINES="edit 1 edit 2 3" && | |
295 | export FAKE_LINES && | |
296 | test_when_finished "git rebase --abort" && | |
0722c805 | 297 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
298 | git rebase -i HEAD~3 && |
299 | git rebase --continue && | |
300 | git reset HEAD^ && | |
1c7969c9 MM |
301 | cat >expected <<EOF && |
302 | rebase in progress; onto $ONTO | |
303 | You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
304 | (Once your working directory is clean, run "git rebase --continue") | |
305 | ||
306 | Changes not staged for commit: | |
307 | (use "git add <file>..." to update what will be committed) | |
308 | (use "git checkout -- <file>..." to discard changes in working directory) | |
309 | ||
310 | modified: main.txt | |
311 | ||
312 | no changes added to commit (use "git add" and/or "git commit -a") | |
313 | EOF | |
2d1cceba LK |
314 | git status --untracked-files=no >actual && |
315 | test_i18ncmp expected actual | |
316 | ' | |
317 | ||
318 | ||
319 | test_expect_success 'status: (continue first edit) second edit and amend' ' | |
320 | git reset --hard several_edits && | |
321 | FAKE_LINES="edit 1 edit 2 3" && | |
322 | export FAKE_LINES && | |
323 | test_when_finished "git rebase --abort" && | |
0722c805 | 324 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
325 | git rebase -i HEAD~3 && |
326 | git rebase --continue && | |
327 | git commit --amend -m "foo" && | |
1c7969c9 MM |
328 | cat >expected <<EOF && |
329 | rebase in progress; onto $ONTO | |
330 | You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
331 | (use "git commit --amend" to amend the current commit) | |
332 | (use "git rebase --continue" once you are satisfied with your changes) | |
333 | ||
334 | nothing to commit (use -u to show untracked files) | |
335 | EOF | |
2d1cceba LK |
336 | git status --untracked-files=no >actual && |
337 | test_i18ncmp expected actual | |
338 | ' | |
339 | ||
340 | ||
341 | test_expect_success 'status: (amend first edit) second edit' ' | |
342 | git reset --hard several_edits && | |
343 | FAKE_LINES="edit 1 edit 2 3" && | |
344 | export FAKE_LINES && | |
345 | test_when_finished "git rebase --abort" && | |
0722c805 | 346 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
347 | git rebase -i HEAD~3 && |
348 | git commit --amend -m "a" && | |
349 | git rebase --continue && | |
1c7969c9 MM |
350 | cat >expected <<EOF && |
351 | rebase in progress; onto $ONTO | |
352 | You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
353 | (use "git commit --amend" to amend the current commit) | |
354 | (use "git rebase --continue" once you are satisfied with your changes) | |
355 | ||
356 | nothing to commit (use -u to show untracked files) | |
357 | EOF | |
2d1cceba LK |
358 | git status --untracked-files=no >actual && |
359 | test_i18ncmp expected actual | |
360 | ' | |
361 | ||
362 | ||
363 | test_expect_success 'status: (amend first edit) second edit and split' ' | |
364 | git reset --hard several_edits && | |
365 | FAKE_LINES="edit 1 edit 2 3" && | |
366 | export FAKE_LINES && | |
367 | test_when_finished "git rebase --abort" && | |
0722c805 | 368 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
369 | git rebase -i HEAD~3 && |
370 | git commit --amend -m "b" && | |
371 | git rebase --continue && | |
372 | git reset HEAD^ && | |
1c7969c9 MM |
373 | cat >expected <<EOF && |
374 | rebase in progress; onto $ONTO | |
375 | You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
376 | (Once your working directory is clean, run "git rebase --continue") | |
377 | ||
378 | Changes not staged for commit: | |
379 | (use "git add <file>..." to update what will be committed) | |
380 | (use "git checkout -- <file>..." to discard changes in working directory) | |
381 | ||
382 | modified: main.txt | |
383 | ||
384 | no changes added to commit (use "git add" and/or "git commit -a") | |
385 | EOF | |
2d1cceba LK |
386 | git status --untracked-files=no >actual && |
387 | test_i18ncmp expected actual | |
388 | ' | |
389 | ||
390 | ||
391 | test_expect_success 'status: (amend first edit) second edit and amend' ' | |
392 | git reset --hard several_edits && | |
393 | FAKE_LINES="edit 1 edit 2 3" && | |
394 | export FAKE_LINES && | |
395 | test_when_finished "git rebase --abort" && | |
0722c805 | 396 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
397 | git rebase -i HEAD~3 && |
398 | git commit --amend -m "c" && | |
399 | git rebase --continue && | |
400 | git commit --amend -m "d" && | |
1c7969c9 MM |
401 | cat >expected <<EOF && |
402 | rebase in progress; onto $ONTO | |
403 | You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
404 | (use "git commit --amend" to amend the current commit) | |
405 | (use "git rebase --continue" once you are satisfied with your changes) | |
406 | ||
407 | nothing to commit (use -u to show untracked files) | |
408 | EOF | |
2d1cceba LK |
409 | git status --untracked-files=no >actual && |
410 | test_i18ncmp expected actual | |
411 | ' | |
412 | ||
413 | ||
414 | test_expect_success 'status: (split first edit) second edit' ' | |
415 | git reset --hard several_edits && | |
416 | FAKE_LINES="edit 1 edit 2 3" && | |
417 | export FAKE_LINES && | |
418 | test_when_finished "git rebase --abort" && | |
0722c805 | 419 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
420 | git rebase -i HEAD~3 && |
421 | git reset HEAD^ && | |
422 | git add main.txt && | |
423 | git commit -m "e" && | |
424 | git rebase --continue && | |
1c7969c9 MM |
425 | cat >expected <<EOF && |
426 | rebase in progress; onto $ONTO | |
427 | You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
428 | (use "git commit --amend" to amend the current commit) | |
429 | (use "git rebase --continue" once you are satisfied with your changes) | |
430 | ||
431 | nothing to commit (use -u to show untracked files) | |
432 | EOF | |
2d1cceba LK |
433 | git status --untracked-files=no >actual && |
434 | test_i18ncmp expected actual | |
435 | ' | |
436 | ||
437 | ||
438 | test_expect_success 'status: (split first edit) second edit and split' ' | |
439 | git reset --hard several_edits && | |
440 | FAKE_LINES="edit 1 edit 2 3" && | |
441 | export FAKE_LINES && | |
442 | test_when_finished "git rebase --abort" && | |
0722c805 | 443 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
444 | git rebase -i HEAD~3 && |
445 | git reset HEAD^ && | |
446 | git add main.txt && | |
447 | git commit --amend -m "f" && | |
448 | git rebase --continue && | |
449 | git reset HEAD^ && | |
1c7969c9 MM |
450 | cat >expected <<EOF && |
451 | rebase in progress; onto $ONTO | |
452 | You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
453 | (Once your working directory is clean, run "git rebase --continue") | |
454 | ||
455 | Changes not staged for commit: | |
456 | (use "git add <file>..." to update what will be committed) | |
457 | (use "git checkout -- <file>..." to discard changes in working directory) | |
458 | ||
459 | modified: main.txt | |
460 | ||
461 | no changes added to commit (use "git add" and/or "git commit -a") | |
462 | EOF | |
2d1cceba LK |
463 | git status --untracked-files=no >actual && |
464 | test_i18ncmp expected actual | |
465 | ' | |
466 | ||
467 | ||
468 | test_expect_success 'status: (split first edit) second edit and amend' ' | |
469 | git reset --hard several_edits && | |
470 | FAKE_LINES="edit 1 edit 2 3" && | |
471 | export FAKE_LINES && | |
472 | test_when_finished "git rebase --abort" && | |
0722c805 | 473 | ONTO=$(git rev-parse --short HEAD~3) && |
2d1cceba LK |
474 | git rebase -i HEAD~3 && |
475 | git reset HEAD^ && | |
476 | git add main.txt && | |
477 | git commit --amend -m "g" && | |
478 | git rebase --continue && | |
479 | git commit --amend -m "h" && | |
1c7969c9 MM |
480 | cat >expected <<EOF && |
481 | rebase in progress; onto $ONTO | |
482 | You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. | |
483 | (use "git commit --amend" to amend the current commit) | |
484 | (use "git rebase --continue" once you are satisfied with your changes) | |
485 | ||
486 | nothing to commit (use -u to show untracked files) | |
487 | EOF | |
2d1cceba LK |
488 | git status --untracked-files=no >actual && |
489 | test_i18ncmp expected actual | |
490 | ' | |
491 | ||
492 | ||
70819263 LK |
493 | test_expect_success 'prepare am_session' ' |
494 | git reset --hard master && | |
495 | git checkout -b am_session && | |
496 | test_commit one_am one.txt "one" && | |
497 | test_commit two_am two.txt "two" && | |
498 | test_commit three_am three.txt "three" | |
499 | ' | |
500 | ||
501 | ||
502 | test_expect_success 'status in an am session: file already exists' ' | |
503 | git checkout -b am_already_exists && | |
504 | test_when_finished "rm Maildir/* && git am --abort" && | |
505 | git format-patch -1 -oMaildir && | |
506 | test_must_fail git am Maildir/*.patch && | |
1c7969c9 MM |
507 | cat >expected <<\EOF && |
508 | On branch am_already_exists | |
509 | You are in the middle of an am session. | |
510 | (fix conflicts and then run "git am --continue") | |
511 | (use "git am --skip" to skip this patch) | |
512 | (use "git am --abort" to restore the original branch) | |
513 | ||
514 | nothing to commit (use -u to show untracked files) | |
515 | EOF | |
70819263 LK |
516 | git status --untracked-files=no >actual && |
517 | test_i18ncmp expected actual | |
518 | ' | |
519 | ||
520 | ||
521 | test_expect_success 'status in an am session: file does not exist' ' | |
522 | git reset --hard am_session && | |
523 | git checkout -b am_not_exists && | |
524 | git rm three.txt && | |
525 | git commit -m "delete three.txt" && | |
526 | test_when_finished "rm Maildir/* && git am --abort" && | |
527 | git format-patch -1 -oMaildir && | |
528 | test_must_fail git am Maildir/*.patch && | |
1c7969c9 MM |
529 | cat >expected <<\EOF && |
530 | On branch am_not_exists | |
531 | You are in the middle of an am session. | |
532 | (fix conflicts and then run "git am --continue") | |
533 | (use "git am --skip" to skip this patch) | |
534 | (use "git am --abort" to restore the original branch) | |
535 | ||
536 | nothing to commit (use -u to show untracked files) | |
537 | EOF | |
70819263 LK |
538 | git status --untracked-files=no >actual && |
539 | test_i18ncmp expected actual | |
540 | ' | |
541 | ||
542 | ||
543 | test_expect_success 'status in an am session: empty patch' ' | |
544 | git reset --hard am_session && | |
545 | git checkout -b am_empty && | |
546 | test_when_finished "rm Maildir/* && git am --abort" && | |
547 | git format-patch -3 -oMaildir && | |
548 | git rm one.txt two.txt three.txt && | |
549 | git commit -m "delete all am_empty" && | |
550 | echo error >Maildir/0002-two_am.patch && | |
551 | test_must_fail git am Maildir/*.patch && | |
1c7969c9 MM |
552 | cat >expected <<\EOF && |
553 | On branch am_empty | |
554 | You are in the middle of an am session. | |
555 | The current patch is empty. | |
556 | (use "git am --skip" to skip this patch) | |
557 | (use "git am --abort" to restore the original branch) | |
558 | ||
559 | nothing to commit (use -u to show untracked files) | |
560 | EOF | |
70819263 LK |
561 | git status --untracked-files=no >actual && |
562 | test_i18ncmp expected actual | |
563 | ' | |
564 | ||
565 | ||
566 | test_expect_success 'status when bisecting' ' | |
567 | git reset --hard master && | |
568 | git checkout -b bisect && | |
569 | test_commit one_bisect main.txt one && | |
570 | test_commit two_bisect main.txt two && | |
571 | test_commit three_bisect main.txt three && | |
572 | test_when_finished "git bisect reset" && | |
573 | git bisect start && | |
574 | git bisect bad && | |
575 | git bisect good one_bisect && | |
b397ea48 | 576 | TGT=$(git rev-parse --short two_bisect) && |
1c7969c9 MM |
577 | cat >expected <<EOF && |
578 | HEAD detached at $TGT | |
579 | You are currently bisecting, started from branch '\''bisect'\''. | |
580 | (use "git bisect reset" to get back to the original branch) | |
581 | ||
582 | nothing to commit (use -u to show untracked files) | |
583 | EOF | |
70819263 LK |
584 | git status --untracked-files=no >actual && |
585 | test_i18ncmp expected actual | |
586 | ' | |
587 | ||
588 | ||
589 | test_expect_success 'status when rebase conflicts with statushints disabled' ' | |
590 | git reset --hard master && | |
591 | git checkout -b statushints_disabled && | |
592 | test_when_finished "git config --local advice.statushints true" && | |
593 | git config --local advice.statushints false && | |
594 | test_commit one_statushints main.txt one && | |
595 | test_commit two_statushints main.txt two && | |
596 | test_commit three_statushints main.txt three && | |
597 | test_when_finished "git rebase --abort" && | |
0722c805 | 598 | ONTO=$(git rev-parse --short HEAD^^) && |
70819263 | 599 | test_must_fail git rebase HEAD^ --onto HEAD^^ && |
1c7969c9 MM |
600 | cat >expected <<EOF && |
601 | rebase in progress; onto $ONTO | |
602 | You are currently rebasing branch '\''statushints_disabled'\'' on '\''$ONTO'\''. | |
603 | ||
604 | Unmerged paths: | |
605 | both modified: main.txt | |
606 | ||
607 | no changes added to commit | |
608 | EOF | |
70819263 LK |
609 | git status --untracked-files=no >actual && |
610 | test_i18ncmp expected actual | |
611 | ' | |
612 | ||
613 | ||
614 | test_expect_success 'prepare for cherry-pick conflicts' ' | |
615 | git reset --hard master && | |
616 | git checkout -b cherry_branch && | |
617 | test_commit one_cherry main.txt one && | |
618 | test_commit two_cherries main.txt two && | |
619 | git checkout -b cherry_branch_second && | |
620 | test_commit second_cherry main.txt second && | |
621 | git checkout cherry_branch && | |
622 | test_commit three_cherries main.txt three | |
623 | ' | |
624 | ||
625 | ||
626 | test_expect_success 'status when cherry-picking before resolving conflicts' ' | |
627 | test_when_finished "git cherry-pick --abort" && | |
628 | test_must_fail git cherry-pick cherry_branch_second && | |
1c7969c9 MM |
629 | cat >expected <<\EOF && |
630 | On branch cherry_branch | |
631 | You are currently cherry-picking. | |
632 | (fix conflicts and run "git cherry-pick --continue") | |
633 | (use "git cherry-pick --abort" to cancel the cherry-pick operation) | |
634 | ||
635 | Unmerged paths: | |
636 | (use "git add <file>..." to mark resolution) | |
637 | ||
638 | both modified: main.txt | |
639 | ||
640 | no changes added to commit (use "git add" and/or "git commit -a") | |
641 | EOF | |
70819263 LK |
642 | git status --untracked-files=no >actual && |
643 | test_i18ncmp expected actual | |
644 | ' | |
645 | ||
646 | ||
647 | test_expect_success 'status when cherry-picking after resolving conflicts' ' | |
648 | git reset --hard cherry_branch && | |
649 | test_when_finished "git cherry-pick --abort" && | |
650 | test_must_fail git cherry-pick cherry_branch_second && | |
651 | echo end >main.txt && | |
652 | git add main.txt && | |
1c7969c9 MM |
653 | cat >expected <<\EOF && |
654 | On branch cherry_branch | |
655 | You are currently cherry-picking. | |
656 | (all conflicts fixed: run "git cherry-pick --continue") | |
657 | (use "git cherry-pick --abort" to cancel the cherry-pick operation) | |
658 | ||
659 | Changes to be committed: | |
660 | ||
661 | modified: main.txt | |
662 | ||
663 | Untracked files not listed (use -u option to show untracked files) | |
664 | EOF | |
70819263 LK |
665 | git status --untracked-files=no >actual && |
666 | test_i18ncmp expected actual | |
667 | ' | |
668 | ||
46ab7d46 | 669 | test_expect_success 'status showing detached at and from a tag' ' |
b397ea48 NTND |
670 | test_commit atag tagging && |
671 | git checkout atag && | |
1c7969c9 MM |
672 | cat >expected <<\EOF |
673 | HEAD detached at atag | |
674 | nothing to commit (use -u to show untracked files) | |
675 | EOF | |
b397ea48 | 676 | git status --untracked-files=no >actual && |
46ab7d46 JH |
677 | test_i18ncmp expected actual && |
678 | ||
679 | git reset --hard HEAD^ && | |
1c7969c9 MM |
680 | cat >expected <<\EOF |
681 | HEAD detached from atag | |
682 | nothing to commit (use -u to show untracked files) | |
683 | EOF | |
46ab7d46 | 684 | git status --untracked-files=no >actual && |
b397ea48 NTND |
685 | test_i18ncmp expected actual |
686 | ' | |
70819263 | 687 | |
db4ef449 MM |
688 | test_expect_success 'status while reverting commit (conflicts)' ' |
689 | git checkout master && | |
690 | echo before >to-revert.txt && | |
691 | test_commit before to-revert.txt && | |
692 | echo old >to-revert.txt && | |
693 | test_commit old to-revert.txt && | |
694 | echo new >to-revert.txt && | |
695 | test_commit new to-revert.txt && | |
87e139c0 MM |
696 | TO_REVERT=$(git rev-parse --short HEAD^) && |
697 | test_must_fail git revert $TO_REVERT && | |
1c7969c9 MM |
698 | cat >expected <<EOF |
699 | On branch master | |
700 | You are currently reverting commit $TO_REVERT. | |
701 | (fix conflicts and run "git revert --continue") | |
702 | (use "git revert --abort" to cancel the revert operation) | |
703 | ||
704 | Unmerged paths: | |
705 | (use "git reset HEAD <file>..." to unstage) | |
706 | (use "git add <file>..." to mark resolution) | |
707 | ||
708 | both modified: to-revert.txt | |
709 | ||
710 | no changes added to commit (use "git add" and/or "git commit -a") | |
711 | EOF | |
db4ef449 MM |
712 | git status --untracked-files=no >actual && |
713 | test_i18ncmp expected actual | |
714 | ' | |
715 | ||
716 | test_expect_success 'status while reverting commit (conflicts resolved)' ' | |
717 | echo reverted >to-revert.txt && | |
718 | git add to-revert.txt && | |
1c7969c9 MM |
719 | cat >expected <<EOF |
720 | On branch master | |
721 | You are currently reverting commit $TO_REVERT. | |
722 | (all conflicts fixed: run "git revert --continue") | |
723 | (use "git revert --abort" to cancel the revert operation) | |
724 | ||
725 | Changes to be committed: | |
726 | (use "git reset HEAD <file>..." to unstage) | |
727 | ||
728 | modified: to-revert.txt | |
729 | ||
730 | Untracked files not listed (use -u option to show untracked files) | |
731 | EOF | |
db4ef449 MM |
732 | git status --untracked-files=no >actual && |
733 | test_i18ncmp expected actual | |
734 | ' | |
735 | ||
736 | test_expect_success 'status after reverting commit' ' | |
737 | git revert --continue && | |
1c7969c9 MM |
738 | cat >expected <<\EOF |
739 | On branch master | |
740 | nothing to commit (use -u to show untracked files) | |
741 | EOF | |
db4ef449 MM |
742 | git status --untracked-files=no >actual && |
743 | test_i18ncmp expected actual | |
744 | ' | |
745 | ||
70819263 | 746 | test_done |