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:
parent
00b8be5a4d
commit
6a6bc5bdc4
@ -218,4 +218,133 @@ test_run_rebase failure -m
|
||||
test_run_rebase failure -i
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user