blob: a6a6c40a98512b190f8610391aa153a294e4b5cb [file] [log] [blame]
Mike Hommey3ebfe632008-02-29 23:08:47 +01001#!/bin/sh
2
3test_description='git rebase --abort tests'
4
5. ./test-lib.sh
6
Bryan Donlan97b88dd2008-05-04 01:37:51 -04007### Test that we handle space characters properly
8work_dir="$(pwd)/test dir"
9
Mike Hommey3ebfe632008-02-29 23:08:47 +010010test_expect_success setup '
Bryan Donlan97b88dd2008-05-04 01:37:51 -040011 mkdir -p "$work_dir" &&
12 cd "$work_dir" &&
13 git init &&
Mike Hommey3ebfe632008-02-29 23:08:47 +010014 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 Hommey4947cf92008-03-01 12:12:13 +010032testrebase() {
33 type=$1
34 dotest=$2
Mike Hommey3ebfe632008-02-29 23:08:47 +010035
Mike Hommey4947cf92008-03-01 12:12:13 +010036 test_expect_success "rebase$type --abort" '
Bryan Donlan97b88dd2008-05-04 01:37:51 -040037 cd "$work_dir" &&
Mike Hommey4947cf92008-03-01 12:12:13 +010038 # Clean up the state from the previous one
Bryan Donlan97b88dd2008-05-04 01:37:51 -040039 git reset --hard pre-rebase &&
40 test_must_fail git rebase$type master &&
Matthieu Moy2caf20c2010-08-10 17:17:52 +020041 test_path_is_dir "$dotest" &&
Mike Hommey4947cf92008-03-01 12:12:13 +010042 git rebase --abort &&
43 test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
Bryan Donlan97b88dd2008-05-04 01:37:51 -040044 test ! -d "$dotest"
Mike Hommey4947cf92008-03-01 12:12:13 +010045 '
Mike Hommey3ebfe632008-02-29 23:08:47 +010046
Mike Hommey4947cf92008-03-01 12:12:13 +010047 test_expect_success "rebase$type --abort after --skip" '
Bryan Donlan97b88dd2008-05-04 01:37:51 -040048 cd "$work_dir" &&
Mike Hommey4947cf92008-03-01 12:12:13 +010049 # Clean up the state from the previous one
Bryan Donlan97b88dd2008-05-04 01:37:51 -040050 git reset --hard pre-rebase &&
51 test_must_fail git rebase$type master &&
Matthieu Moy2caf20c2010-08-10 17:17:52 +020052 test_path_is_dir "$dotest" &&
Mike Hommey4947cf92008-03-01 12:12:13 +010053 test_must_fail git rebase --skip &&
54 test $(git rev-parse HEAD) = $(git rev-parse master) &&
Nanako Shiraishi0cb0e142008-09-03 17:59:27 +090055 git rebase --abort &&
Mike Hommey4947cf92008-03-01 12:12:13 +010056 test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
Bryan Donlan97b88dd2008-05-04 01:37:51 -040057 test ! -d "$dotest"
Mike Hommey4947cf92008-03-01 12:12:13 +010058 '
Mike Hommey3ebfe632008-02-29 23:08:47 +010059
Mike Hommey4947cf92008-03-01 12:12:13 +010060 test_expect_success "rebase$type --abort after --continue" '
Bryan Donlan97b88dd2008-05-04 01:37:51 -040061 cd "$work_dir" &&
Mike Hommey4947cf92008-03-01 12:12:13 +010062 # Clean up the state from the previous one
Bryan Donlan97b88dd2008-05-04 01:37:51 -040063 git reset --hard pre-rebase &&
64 test_must_fail git rebase$type master &&
Matthieu Moy2caf20c2010-08-10 17:17:52 +020065 test_path_is_dir "$dotest" &&
Mike Hommey4947cf92008-03-01 12:12:13 +010066 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 Donlan97b88dd2008-05-04 01:37:51 -040073 test ! -d "$dotest"
Mike Hommey4947cf92008-03-01 12:12:13 +010074 '
Martin von Zweigbergk729ec9e2010-11-21 12:11:21 +010075
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 Zweigbergk95135b02011-02-06 13:43:36 -050087
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 Hommey4947cf92008-03-01 12:12:13 +010097}
Mike Hommey3ebfe632008-02-29 23:08:47 +010098
Johannes Schindelin51ef1da2008-07-21 12:51:02 +020099testrebase "" .git/rebase-apply
Johannes Schindelin28ed6e72008-07-16 03:33:44 +0200100testrebase " --merge" .git/rebase-merge
Mike Hommey3ebfe632008-02-29 23:08:47 +0100101
102test_done