rebase tests: test linear branch topology
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 27 Aug 2019 05:38:04 +0000 (01:38 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 27 Aug 2019 22:33:40 +0000 (15:33 -0700)
Add tests rebasing a linear branch topology to linear rebase tests
added in 2aad7cace2 ("add simple tests of consistency across rebase
types", 2013-06-06).

These tests are duplicates of two surrounding tests that do the same
with tags pointing to the same objects. Right now there's no change in
behavior being introduced, but as we'll see in a subsequent change
rebase can have different behaviors when working implicitly with
remote tracking branches.

While I'm at it add a --fork-point test, strictly speaking this is
redundant to the existing '' test, as no argument to rebase implies
--fork-point. But now it's easier to grep for tests that explicitly
stress --fork-point.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t3421-rebase-topology-linear.sh

index 7274dca..b847064 100755 (executable)
@@ -31,6 +31,16 @@ test_run_rebase success -m
 test_run_rebase success -i
 test_have_prereq !REBASE_P || test_run_rebase success -p
 
+test_expect_success 'setup branches and remote tracking' '
+       git tag -l >tags &&
+       for tag in $(cat tags)
+       do
+               git branch branch-$tag $tag || return 1
+       done &&
+       git remote add origin "file://$PWD" &&
+       git fetch origin
+'
+
 test_run_rebase () {
        result=$1
        shift
@@ -57,10 +67,28 @@ test_run_rebase () {
        "
 }
 test_run_rebase success ''
+test_run_rebase success --fork-point
 test_run_rebase success -m
 test_run_rebase success -i
 test_have_prereq !REBASE_P || test_run_rebase failure -p
 
+test_run_rebase () {
+       result=$1
+       shift
+       test_expect_$result "rebase $* -f rewrites even if remote upstream is an ancestor" "
+               reset_rebase &&
+               git rebase $* -f branch-b branch-e &&
+               ! test_cmp_rev branch-e origin/branch-e &&
+               test_cmp_rev branch-b HEAD~2 &&
+               test_linear_range 'd e' branch-b..
+       "
+}
+test_run_rebase success ''
+test_run_rebase success --fork-point
+test_run_rebase success -m
+test_run_rebase success -i
+test_have_prereq !REBASE_P || test_run_rebase success -p
+
 test_run_rebase () {
        result=$1
        shift
@@ -71,6 +99,7 @@ test_run_rebase () {
        "
 }
 test_run_rebase success ''
+test_run_rebase success --fork-point
 test_run_rebase success -m
 test_run_rebase success -i
 test_have_prereq !REBASE_P || test_run_rebase success -p