[PATCH 6/6] rebase --rewrite-refs: tests
Signed-off-by: Greg Price <price@mit.edu>
---
t/t3420-rebase-ref.sh | 75 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 75 insertions(+), 0 deletions(-)
create mode 100644 t/t3420-rebase-ref.sh
diff --git a/t/t3420-rebase-ref.sh b/t/t3420-rebase-ref.sh
new file mode 100644
index 0000000..601a434
--- /dev/null
+++ b/t/t3420-rebase-ref.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+test_description='git rebase --rewrite-refs'
+
+. ./test-lib.sh
+. "$TEST_DIRECTORY/lib-rebase.sh"
+set_fake_editor
+
+# part1 part2 topic
+# | | |
+# v v v
+# A-----C------D-----E
+# \
+# B <--master
+
+test_expect_success setup '
+ test_commit A &&
+ git branch topic &&
+ test_commit B &&
+ git checkout topic &&
+ test_commit C &&
+ git branch part1 &&
+ test_commit D
+ git branch part2 &&
+ test_commit E
+'
+
+test_expect_success 'rebase --rewrite-heads' '
+ git reset --hard &&
+ git checkout topic &&
+ git reset --hard E &&
+
+ git rebase --rewrite-heads master &&
+ git rev-parse part1 >actual &&
+ git rev-parse HEAD~2 >expected &&
+ test_cmp expected actual &&
+ git rev-parse part2 >actual &&
+ git rev-parse HEAD~1 >expected &&
+ test_cmp expected actual
+'
+
+test_expect_success 'rebase --rewrite-refs' '
+ git reset --hard &&
+ git update-ref refs/heads/part1 C &&
+ git update-ref refs/heads/part2 D &&
+ git checkout topic &&
+ git reset --hard E &&
+
+ git rebase --rewrite-refs=refs/heads/part2 master &&
+ git rev-parse part1 >actual &&
+ git rev-parse C >expected &&
+ test_cmp expected actual &&
+ git rev-parse part2 >actual &&
+ git rev-parse HEAD~1 >expected &&
+ test_cmp expected actual
+'
+
+test_expect_success 'ref in TODO followed by rebase --abort' '
+ git reset --hard &&
+ git update-ref refs/heads/part1 C &&
+ git update-ref refs/heads/part2 D &&
+ git checkout topic &&
+ git reset --hard E &&
+
+ FAKE_LINES="1 2 edit 3 4 5" git rebase -i --rewrite-heads master &&
+ git rev-parse part1 >actual &&
+ git rev-parse HEAD^ >expected &&
+ test_cmp expected actual &&
+ git rebase --abort &&
+ git rev-parse part1 >actual &&
+ git rev-parse C >expected &&
+ test_cmp expected actual
+'
+
+test_done
--
1.7.5.4