Browse Source

add simple tests of consistency across rebase types

Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Martin von Zweigbergk 12 years ago committed by Junio C Hamano
parent
commit
2aad7cace2
  1. 16
      t/lib-rebase.sh
  2. 78
      t/t3421-rebase-topology-linear.sh

16
t/lib-rebase.sh

@ -65,3 +65,19 @@ EOF @@ -65,3 +65,19 @@ EOF
test_set_editor "$(pwd)/fake-editor.sh"
chmod a+x fake-editor.sh
}

# checks that the revisions in "$2" represent a linear range with the
# subjects in "$1"
test_linear_range () {
revlist_merges=$(git rev-list --merges "$2") &&
test -z "$revlist_merges" &&
expected=$1
set -- $(git log --reverse --format=%s "$2")
test "$expected" = "$*"
}

reset_rebase () {
test_might_fail git rebase --abort &&
git reset --hard &&
git clean -f
}

78
t/t3421-rebase-topology-linear.sh

@ -0,0 +1,78 @@ @@ -0,0 +1,78 @@
#!/bin/sh

test_description='basic rebase topology tests'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-rebase.sh

# a---b---c
# \
# d---e
test_expect_success 'setup' '
test_commit a &&
test_commit b &&
test_commit c &&
git checkout b &&
test_commit d &&
test_commit e
'

test_run_rebase () {
result=$1
shift
test_expect_$result "simple rebase $*" "
reset_rebase &&
git rebase $* c e &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'd e' 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 $* is no-op if upstream is an ancestor" "
reset_rebase &&
git rebase $* b e &&
test_cmp_rev e HEAD
"
}
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 $* -f rewrites even if upstream is an ancestor" "
reset_rebase &&
git rebase $* -f b e &&
! test_cmp_rev e HEAD &&
test_cmp_rev b HEAD~2 &&
test_linear_range 'd e' b..
"
}
test_run_rebase success ''
test_run_rebase success -m
test_run_rebase success -i
test_run_rebase failure -p

test_run_rebase () {
result=$1
shift
test_expect_$result "rebase $* fast-forwards from ancestor of upstream" "
reset_rebase &&
git rebase $* e b &&
test_cmp_rev e HEAD
"
}
test_run_rebase success ''
test_run_rebase success -m
test_run_rebase success -i
test_run_rebase success -p

test_done
Loading…
Cancel
Save