git/t/t4151-am-abort.sh
Junio C Hamano 7b3b7e3758 am --abort: keep unrelated commits since the last failure and warn
After making commits (either by pulling or doing their own work) after a
failed "am", the user will be reminded by next "am" invocation that there
was a failed "am" that the user needs to decide to resolve or to get rid
of the old "am" attempt.  The "am --abort" option was meant to help the
latter.  However, it rewinded the HEAD back to the beginning of the failed
"am" attempt, discarding commits made (perhaps by mistake) since.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-12-21 11:16:28 -08:00

75 lines
1.6 KiB
Bash
Executable file

#!/bin/sh
test_description='am --abort'
. ./test-lib.sh
test_expect_success setup '
for i in a b c d e f g
do
echo $i
done >file-1 &&
cp file-1 file-2 &&
test_tick &&
git add file-1 file-2 &&
git commit -m initial &&
git tag initial &&
for i in 2 3 4 5 6
do
echo $i >>file-1 &&
echo $i >otherfile-$i &&
git add otherfile-$i &&
test_tick &&
git commit -a -m $i || break
done &&
git format-patch --no-numbered initial &&
git checkout -b side initial &&
echo local change >file-2-expect
'
for with3 in '' ' -3'
do
test_expect_success "am$with3 stops at a patch that does not apply" '
git reset --hard initial &&
cp file-2-expect file-2 &&
test_must_fail git am$with3 000[1245]-*.patch &&
git log --pretty=tformat:%s >actual &&
for i in 3 2 initial
do
echo $i
done >expect &&
test_cmp expect actual
'
test_expect_success "am$with3 --skip continue after failed am$with3" '
test_must_fail git am$with3 --skip >output &&
test "$(grep "^Applying" output)" = "Applying: 6" &&
test_cmp file-2-expect file-2 &&
test ! -f .git/MERGE_RR
'
test_expect_success "am --abort goes back after failed am$with3" '
git am --abort &&
git rev-parse HEAD >actual &&
git rev-parse initial >expect &&
test_cmp expect actual &&
test_cmp file-2-expect file-2 &&
git diff-index --exit-code --cached HEAD &&
test ! -f .git/MERGE_RR
'
done
test_expect_success 'am --abort will keep the local commits intact' '
test_must_fail git am 0004-*.patch &&
test_commit unrelated &&
git rev-parse HEAD >expect &&
git am --abort &&
git rev-parse HEAD >actual &&
test_cmp expect actual
'
test_done