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>
This commit is contained in:
parent
edca415256
commit
2aad7cace2
@ -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
Executable file
78
t/t3421-rebase-topology-linear.sh
Executable file
@ -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…
Reference in New Issue
Block a user