зеркало из https://github.com/microsoft/git.git
add tests for rebasing root
Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
00b8be5a4d
Коммит
6a6bc5bdc4
|
@ -218,4 +218,133 @@ test_run_rebase failure -m
|
||||||
test_run_rebase failure -i
|
test_run_rebase failure -i
|
||||||
test_run_rebase failure -p
|
test_run_rebase failure -p
|
||||||
|
|
||||||
|
# m
|
||||||
|
# /
|
||||||
|
# a---b---c---g
|
||||||
|
#
|
||||||
|
# x---y---B
|
||||||
|
#
|
||||||
|
# uppercase = cherry-picked
|
||||||
|
# m = reverted b
|
||||||
|
#
|
||||||
|
# Reverted patches are there for tests to be able to check if a commit
|
||||||
|
# that introduced the same change as another commit is
|
||||||
|
# dropped. Without reverted commits, we could get false positives
|
||||||
|
# because applying the patch succeeds, but simply results in no
|
||||||
|
# changes.
|
||||||
|
test_expect_success 'setup of linear history for test involving root' '
|
||||||
|
git checkout b &&
|
||||||
|
revert m b &&
|
||||||
|
git checkout --orphan disjoint &&
|
||||||
|
git rm -rf . &&
|
||||||
|
test_commit x &&
|
||||||
|
test_commit y &&
|
||||||
|
cherry_pick B b
|
||||||
|
'
|
||||||
|
|
||||||
|
test_run_rebase () {
|
||||||
|
result=$1
|
||||||
|
shift
|
||||||
|
test_expect_$result "rebase $* --onto --root" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* --onto c --root y &&
|
||||||
|
test_cmp_rev c HEAD~2 &&
|
||||||
|
test_linear_range 'x y' c..
|
||||||
|
"
|
||||||
|
}
|
||||||
|
test_run_rebase success ''
|
||||||
|
test_run_rebase failure -m
|
||||||
|
test_run_rebase success -i
|
||||||
|
test_run_rebase success -p
|
||||||
|
|
||||||
|
test_run_rebase () {
|
||||||
|
result=$1
|
||||||
|
shift
|
||||||
|
test_expect_$result "rebase $* without --onto --root with disjoint history" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* c y &&
|
||||||
|
test_cmp_rev c HEAD~2 &&
|
||||||
|
test_linear_range 'x y' 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 $* --onto --root drops patch in onto" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* --onto m --root B &&
|
||||||
|
test_cmp_rev m HEAD~2 &&
|
||||||
|
test_linear_range 'x y' m..
|
||||||
|
"
|
||||||
|
}
|
||||||
|
test_run_rebase success ''
|
||||||
|
test_run_rebase failure -m
|
||||||
|
test_run_rebase success -i
|
||||||
|
test_run_rebase success -p
|
||||||
|
|
||||||
|
test_run_rebase () {
|
||||||
|
result=$1
|
||||||
|
shift
|
||||||
|
test_expect_$result "rebase $* --onto --root with merge-base does not go to root" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* --onto m --root g &&
|
||||||
|
test_cmp_rev m HEAD~2 &&
|
||||||
|
test_linear_range 'c g' m..
|
||||||
|
"
|
||||||
|
}
|
||||||
|
|
||||||
|
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 $* without --onto --root with disjoint history drops patch in onto" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* m B &&
|
||||||
|
test_cmp_rev m HEAD~2 &&
|
||||||
|
test_linear_range 'x y' m..
|
||||||
|
"
|
||||||
|
}
|
||||||
|
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 $* --root on linear history is a no-op" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* --root c &&
|
||||||
|
test_cmp_rev c HEAD
|
||||||
|
"
|
||||||
|
}
|
||||||
|
test_run_rebase failure ''
|
||||||
|
test_run_rebase failure -m
|
||||||
|
test_run_rebase failure -i
|
||||||
|
test_run_rebase failure -p
|
||||||
|
|
||||||
|
test_run_rebase () {
|
||||||
|
result=$1
|
||||||
|
shift
|
||||||
|
test_expect_$result "rebase $* -f --root on linear history causes re-write" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* -f --root c &&
|
||||||
|
! test_cmp_rev a HEAD~2 &&
|
||||||
|
test_linear_range 'a b c' HEAD
|
||||||
|
"
|
||||||
|
}
|
||||||
|
test_run_rebase success ''
|
||||||
|
test_run_rebase success -m
|
||||||
|
test_run_rebase success -i
|
||||||
|
test_run_rebase success -p
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Загрузка…
Ссылка в новой задаче