add tests for rebasing of empty commits
authorMartin von Zweigbergk <martinvonz@gmail.com>
Fri, 7 Jun 2013 06:11:39 +0000 (23:11 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 7 Jun 2013 16:41:42 +0000 (09:41 -0700)
Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t3401-rebase-partial.sh
t/t3421-rebase-topology-linear.sh
index 58f482378392c8c358a3129094885f90ead9808c..7ba17974c585d005fb4f1c757b76377f0c0518a5 100755 (executable)
@@ -42,28 +42,4 @@ test_expect_success 'rebase --merge topic branch that was partially merged upstr
        test_path_is_missing .git/rebase-merge
 '
 
        test_path_is_missing .git/rebase-merge
 '
 
-test_expect_success 'rebase ignores empty commit' '
-       git reset --hard A &&
-       git commit --allow-empty -m empty &&
-       test_commit D &&
-       git rebase C &&
-       test "$(git log --format=%s C..)" = "D"
-'
-
-test_expect_success 'rebase --keep-empty' '
-       git reset --hard D &&
-       git rebase --keep-empty C &&
-       test "$(git log --format=%s C..)" = "D
-empty"
-'
-
-test_expect_success 'rebase --keep-empty keeps empty even if already in upstream' '
-       git reset --hard A &&
-       git commit --allow-empty -m also-empty &&
-       git rebase --keep-empty D &&
-       test "$(git log --format=%s A..)" = "also-empty
-D
-empty"
-'
-
 test_done
 test_done
index ddcbfc67246c886d6efba0c35bd4bcfe044e2006..f19f0d0346ded015b06e8078db0a9a11c1e751f5 100755 (executable)
@@ -160,4 +160,62 @@ test_run_rebase success -m
 test_run_rebase success -i
 test_run_rebase success -p
 
 test_run_rebase success -i
 test_run_rebase success -p
 
+# a---b---c---j!
+#      \
+#       d---k!--l
+#
+# ! = empty
+test_expect_success 'setup of linear history for empty commit tests' '
+       git checkout c &&
+       make_empty j &&
+       git checkout d &&
+       make_empty k &&
+       test_commit l
+'
+
+test_run_rebase () {
+       result=$1
+       shift
+       test_expect_$result "rebase $* drops empty commit" "
+               reset_rebase &&
+               git rebase $* c l &&
+               test_cmp_rev c HEAD~2 &&
+               test_linear_range 'd l' c..
+       "
+}
+test_run_rebase success ''
+test_run_rebase success -m
+test_run_rebase success -i
+test_run_rebase success -p
+
+test_run_rebase () {
+       result=$1
+       shift
+       test_expect_$result "rebase $* --keep-empty" "
+               reset_rebase &&
+               git rebase $* --keep-empty c l &&
+               test_cmp_rev c HEAD~3 &&
+               test_linear_range 'd k l' c..
+       "
+}
+test_run_rebase success ''
+test_run_rebase failure -m
+test_run_rebase success -i
+test_run_rebase failure -p
+
+test_run_rebase () {
+       result=$1
+       shift
+       test_expect_$result "rebase $* --keep-empty keeps empty even if already in upstream" "
+               reset_rebase &&
+               git rebase $* --keep-empty j l &&
+               test_cmp_rev j HEAD~3 &&
+               test_linear_range 'd k l' j..
+       "
+}
+test_run_rebase success ''
+test_run_rebase failure -m
+test_run_rebase failure -i
+test_run_rebase failure -p
+
 test_done
 test_done