Mike Hommey | 3ebfe63 | 2008-02-29 23:08:47 +0100 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | test_description='git rebase --abort tests' |
| 4 | |
| 5 | . ./test-lib.sh |
| 6 | |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 7 | ### Test that we handle space characters properly |
| 8 | work_dir="$(pwd)/test dir" |
| 9 | |
Mike Hommey | 3ebfe63 | 2008-02-29 23:08:47 +0100 | [diff] [blame] | 10 | test_expect_success setup ' |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 11 | mkdir -p "$work_dir" && |
| 12 | cd "$work_dir" && |
| 13 | git init && |
Mike Hommey | 3ebfe63 | 2008-02-29 23:08:47 +0100 | [diff] [blame] | 14 | echo a > a && |
| 15 | git add a && |
| 16 | git commit -m a && |
| 17 | git branch to-rebase && |
| 18 | |
| 19 | echo b > a && |
| 20 | git commit -a -m b && |
| 21 | echo c > a && |
| 22 | git commit -a -m c && |
| 23 | |
| 24 | git checkout to-rebase && |
| 25 | echo d > a && |
| 26 | git commit -a -m "merge should fail on this" && |
| 27 | echo e > a && |
| 28 | git commit -a -m "merge should fail on this, too" && |
| 29 | git branch pre-rebase |
| 30 | ' |
| 31 | |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 32 | testrebase() { |
| 33 | type=$1 |
| 34 | dotest=$2 |
Mike Hommey | 3ebfe63 | 2008-02-29 23:08:47 +0100 | [diff] [blame] | 35 | |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 36 | test_expect_success "rebase$type --abort" ' |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 37 | cd "$work_dir" && |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 38 | # Clean up the state from the previous one |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 39 | git reset --hard pre-rebase && |
| 40 | test_must_fail git rebase$type master && |
Matthieu Moy | 2caf20c | 2010-08-10 17:17:52 +0200 | [diff] [blame] | 41 | test_path_is_dir "$dotest" && |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 42 | git rebase --abort && |
| 43 | test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) && |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 44 | test ! -d "$dotest" |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 45 | ' |
Mike Hommey | 3ebfe63 | 2008-02-29 23:08:47 +0100 | [diff] [blame] | 46 | |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 47 | test_expect_success "rebase$type --abort after --skip" ' |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 48 | cd "$work_dir" && |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 49 | # Clean up the state from the previous one |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 50 | git reset --hard pre-rebase && |
| 51 | test_must_fail git rebase$type master && |
Matthieu Moy | 2caf20c | 2010-08-10 17:17:52 +0200 | [diff] [blame] | 52 | test_path_is_dir "$dotest" && |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 53 | test_must_fail git rebase --skip && |
| 54 | test $(git rev-parse HEAD) = $(git rev-parse master) && |
Nanako Shiraishi | 0cb0e14 | 2008-09-03 17:59:27 +0900 | [diff] [blame] | 55 | git rebase --abort && |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 56 | test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) && |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 57 | test ! -d "$dotest" |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 58 | ' |
Mike Hommey | 3ebfe63 | 2008-02-29 23:08:47 +0100 | [diff] [blame] | 59 | |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 60 | test_expect_success "rebase$type --abort after --continue" ' |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 61 | cd "$work_dir" && |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 62 | # Clean up the state from the previous one |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 63 | git reset --hard pre-rebase && |
| 64 | test_must_fail git rebase$type master && |
Matthieu Moy | 2caf20c | 2010-08-10 17:17:52 +0200 | [diff] [blame] | 65 | test_path_is_dir "$dotest" && |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 66 | echo c > a && |
| 67 | echo d >> a && |
| 68 | git add a && |
| 69 | test_must_fail git rebase --continue && |
| 70 | test $(git rev-parse HEAD) != $(git rev-parse master) && |
| 71 | git rebase --abort && |
| 72 | test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) && |
Bryan Donlan | 97b88dd | 2008-05-04 01:37:51 -0400 | [diff] [blame] | 73 | test ! -d "$dotest" |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 74 | ' |
Martin von Zweigbergk | 729ec9e | 2010-11-21 12:11:21 +0100 | [diff] [blame] | 75 | |
| 76 | test_expect_success "rebase$type --abort does not update reflog" ' |
| 77 | cd "$work_dir" && |
| 78 | # Clean up the state from the previous one |
| 79 | git reset --hard pre-rebase && |
| 80 | git reflog show to-rebase > reflog_before && |
| 81 | test_must_fail git rebase$type master && |
| 82 | git rebase --abort && |
| 83 | git reflog show to-rebase > reflog_after && |
| 84 | test_cmp reflog_before reflog_after && |
| 85 | rm reflog_before reflog_after |
| 86 | ' |
Martin von Zweigbergk | 95135b0 | 2011-02-06 13:43:36 -0500 | [diff] [blame] | 87 | |
| 88 | test_expect_success 'rebase --abort can not be used with other options' ' |
| 89 | cd "$work_dir" && |
| 90 | # Clean up the state from the previous one |
| 91 | git reset --hard pre-rebase && |
| 92 | test_must_fail git rebase$type master && |
| 93 | test_must_fail git rebase -v --abort && |
| 94 | test_must_fail git rebase --abort -v && |
| 95 | git rebase --abort |
| 96 | ' |
Mike Hommey | 4947cf9 | 2008-03-01 12:12:13 +0100 | [diff] [blame] | 97 | } |
Mike Hommey | 3ebfe63 | 2008-02-29 23:08:47 +0100 | [diff] [blame] | 98 | |
Johannes Schindelin | 51ef1da | 2008-07-21 12:51:02 +0200 | [diff] [blame] | 99 | testrebase "" .git/rebase-apply |
Johannes Schindelin | 28ed6e7 | 2008-07-16 03:33:44 +0200 | [diff] [blame] | 100 | testrebase " --merge" .git/rebase-merge |
Mike Hommey | 3ebfe63 | 2008-02-29 23:08:47 +0100 | [diff] [blame] | 101 | |
| 102 | test_done |