. ./test-lib.sh
+### Test that we handle space characters properly
+work_dir="$(pwd)/test dir"
+
test_expect_success setup '
+ mkdir -p "$work_dir" &&
+ cd "$work_dir" &&
+ git init &&
echo a > a &&
git add a &&
git commit -m a &&
git branch pre-rebase
'
-test_expect_success 'rebase --abort' '
- test_must_fail git rebase master &&
- git rebase --abort &&
- test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase)
-'
+testrebase() {
+ type=$1
+ dotest=$2
-test_expect_success 'rebase --abort after --skip' '
- # Clean up the state from the previous one
- git reset --hard pre-rebase
- rm -rf .dotest
+ test_expect_success "rebase$type --abort" '
+ cd "$work_dir" &&
+ # Clean up the state from the previous one
+ git reset --hard pre-rebase &&
+ test_must_fail git rebase$type master &&
+ test_path_is_dir "$dotest" &&
+ git rebase --abort &&
+ test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
+ test ! -d "$dotest"
+ '
- test_must_fail git rebase master &&
- test_must_fail git rebase --skip &&
- test $(git rev-parse HEAD) = $(git rev-parse master) &&
- git rebase --abort &&
- test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase)
-'
+ test_expect_success "rebase$type --abort after --skip" '
+ cd "$work_dir" &&
+ # Clean up the state from the previous one
+ git reset --hard pre-rebase &&
+ test_must_fail git rebase$type master &&
+ test_path_is_dir "$dotest" &&
+ test_must_fail git rebase --skip &&
+ test $(git rev-parse HEAD) = $(git rev-parse master) &&
+ git rebase --abort &&
+ test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
+ test ! -d "$dotest"
+ '
-test_expect_success 'rebase --abort after --continue' '
- # Clean up the state from the previous one
- git reset --hard pre-rebase
- rm -rf .dotest
+ test_expect_success "rebase$type --abort after --continue" '
+ cd "$work_dir" &&
+ # Clean up the state from the previous one
+ git reset --hard pre-rebase &&
+ test_must_fail git rebase$type master &&
+ test_path_is_dir "$dotest" &&
+ echo c > a &&
+ echo d >> a &&
+ git add a &&
+ test_must_fail 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 ! -d "$dotest"
+ '
- test_must_fail git rebase master &&
- echo c > a &&
- echo d >> a &&
- git add a &&
- test_must_fail 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_expect_success "rebase$type --abort does not update reflog" '
+ cd "$work_dir" &&
+ # Clean up the state from the previous one
+ git reset --hard pre-rebase &&
+ git reflog show to-rebase > reflog_before &&
+ test_must_fail git rebase$type master &&
+ git rebase --abort &&
+ git reflog show to-rebase > reflog_after &&
+ test_cmp reflog_before reflog_after &&
+ rm reflog_before reflog_after
+ '
+}
+
+testrebase "" .git/rebase-apply
+testrebase " --merge" .git/rebase-merge
test_done