We expect git rebase --abort to come back to the original (pre-rebase) head, independently from when it's run during a rebase. Signed-off-by: Mike Hommey <mh@xxxxxxxxxxxx> --- I wrote this test because I spotted a problem with git rebase --abort, and expanded the test to other cases that work, but that it is still better to have a test for. The failing test is the third. I don't have enough knowledge in git-rebase to write an appropriate fix, but the problem seems to be in move_to_original_branch, where testing head_name doesn't seem appropriate. t/t3407-rebase-abort.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+), 0 deletions(-) create mode 100755 t/t3407-rebase-abort.sh diff --git a/t/t3407-rebase-abort.sh b/t/t3407-rebase-abort.sh new file mode 100755 index 0000000..abdecc9 --- /dev/null +++ b/t/t3407-rebase-abort.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +test_description='git rebase --abort tests' + +. ./test-lib.sh + +test_expect_success setup ' + echo a > a && + git add a && + git commit -m a && + git branch to-rebase && + + echo b > a && + git commit -a -m b && + echo c > a && + git commit -a -m c && + + git checkout to-rebase && + echo d > a && + git commit -a -m "merge should fail on this" && + echo e > a && + git commit -a -m "merge should fail on this, too" && + git branch pre-rebase +' + +test_expect_success 'rebase --abort' ' + ! git rebase master && + git rebase --abort && + test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) +' + +# In case previous test failed +git reset --hard pre-rebase >&3 2>&4 +rm -rf .dotest # Should be changed whenever rebase stop using .dotest + +test_expect_success 'rebase --abort after --skip' ' + ! git rebase master && + ! git rebase --skip && + test $(git rev-parse HEAD) = $(git rev-parse master) && + sh -x ../../git-rebase --abort && + test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) +' + +# In case previous test failed +git reset --hard pre-rebase >&3 2>&4 +rm -rf .dotest # Should be changed whenever rebase stop using .dotest + +test_expect_success 'rebase --abort after --continue' ' + ! git rebase master && + echo c > a && + echo d >> a && + git add a && + ! git rebase --continue && + test $(git rev-parse HEAD) != $(git rev-parse master) && + git rebase --abort && + test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) +' + +test_done -- 1.5.4.3.340.g97b97.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html