stash: ensure --no-keep-index and --patch can be used in any order
[git/jnareb-git.git] / t / t3407-rebase-abort.sh
blobe573dc845b3d72004b2a96f344528c68977c52e1
1 #!/bin/sh
3 test_description='git rebase --abort tests'
5 . ./test-lib.sh
7 ### Test that we handle space characters properly
8 work_dir="$(pwd)/test dir"
10 test_expect_success setup '
11 mkdir -p "$work_dir" &&
12 cd "$work_dir" &&
13 git init &&
14 echo a > a &&
15 git add a &&
16 git commit -m a &&
17 git branch to-rebase &&
19 echo b > a &&
20 git commit -a -m b &&
21 echo c > a &&
22 git commit -a -m c &&
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
32 testrebase() {
33 type=$1
34 dotest=$2
36 test_expect_success "rebase$type --abort" '
37 cd "$work_dir" &&
38 # Clean up the state from the previous one
39 git reset --hard pre-rebase &&
40 test_must_fail git rebase$type master &&
41 test_path_is_dir "$dotest" &&
42 git rebase --abort &&
43 test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
44 test ! -d "$dotest"
47 test_expect_success "rebase$type --abort after --skip" '
48 cd "$work_dir" &&
49 # Clean up the state from the previous one
50 git reset --hard pre-rebase &&
51 test_must_fail git rebase$type master &&
52 test_path_is_dir "$dotest" &&
53 test_must_fail git rebase --skip &&
54 test $(git rev-parse HEAD) = $(git rev-parse master) &&
55 git rebase --abort &&
56 test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
57 test ! -d "$dotest"
60 test_expect_success "rebase$type --abort after --continue" '
61 cd "$work_dir" &&
62 # Clean up the state from the previous one
63 git reset --hard pre-rebase &&
64 test_must_fail git rebase$type master &&
65 test_path_is_dir "$dotest" &&
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) &&
73 test ! -d "$dotest"
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
89 testrebase "" .git/rebase-apply
90 testrebase " --merge" .git/rebase-merge
92 test_done