mirror of
https://github.com/git/git
synced 2024-11-05 18:59:29 +00:00
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
2 changed files with 94 additions and 0 deletions
|
@ -65,3 +65,19 @@ EOF
|
||||||
test_set_editor "$(pwd)/fake-editor.sh"
|
test_set_editor "$(pwd)/fake-editor.sh"
|
||||||
chmod a+x 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 a new issue