add tests for rebasing with patch-equivalence present
Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
2aad7cace2
commit
5b5e1c7c78
@ -81,3 +81,20 @@ reset_rebase () {
|
|||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git clean -f
|
git clean -f
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cherry_pick () {
|
||||||
|
git cherry-pick -n "$2" &&
|
||||||
|
git commit -m "$1" &&
|
||||||
|
git tag "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
revert () {
|
||||||
|
git revert -n "$2" &&
|
||||||
|
git commit -m "$1" &&
|
||||||
|
git tag "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
make_empty () {
|
||||||
|
git commit --allow-empty -m "$1" &&
|
||||||
|
git tag "$1"
|
||||||
|
}
|
||||||
|
@ -75,4 +75,89 @@ test_run_rebase success -m
|
|||||||
test_run_rebase success -i
|
test_run_rebase success -i
|
||||||
test_run_rebase success -p
|
test_run_rebase success -p
|
||||||
|
|
||||||
|
# f
|
||||||
|
# /
|
||||||
|
# a---b---c---g---h
|
||||||
|
# \
|
||||||
|
# d---G---i
|
||||||
|
#
|
||||||
|
# uppercase = cherry-picked
|
||||||
|
# h = reverted g
|
||||||
|
#
|
||||||
|
# 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 range selection tests' '
|
||||||
|
git checkout c &&
|
||||||
|
test_commit g &&
|
||||||
|
revert h g &&
|
||||||
|
git checkout d &&
|
||||||
|
cherry_pick G g &&
|
||||||
|
test_commit i &&
|
||||||
|
git checkout b &&
|
||||||
|
test_commit f
|
||||||
|
'
|
||||||
|
|
||||||
|
test_run_rebase () {
|
||||||
|
result=$1
|
||||||
|
shift
|
||||||
|
test_expect_$result "rebase $* drops patches in upstream" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* h i &&
|
||||||
|
test_cmp_rev h HEAD~2 &&
|
||||||
|
test_linear_range 'd i' h..
|
||||||
|
"
|
||||||
|
}
|
||||||
|
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 $* can drop last patch if in upstream" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* h G &&
|
||||||
|
test_cmp_rev h HEAD^ &&
|
||||||
|
test_linear_range 'd' h..
|
||||||
|
"
|
||||||
|
}
|
||||||
|
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 drops patches in upstream" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* --onto f h i &&
|
||||||
|
test_cmp_rev f HEAD~2 &&
|
||||||
|
test_linear_range 'd i' f..
|
||||||
|
"
|
||||||
|
}
|
||||||
|
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 does not drop patches in onto" "
|
||||||
|
reset_rebase &&
|
||||||
|
git rebase $* --onto h f i &&
|
||||||
|
test_cmp_rev h HEAD~3 &&
|
||||||
|
test_linear_range 'd G i' h..
|
||||||
|
"
|
||||||
|
}
|
||||||
|
test_run_rebase success ''
|
||||||
|
test_run_rebase success -m
|
||||||
|
test_run_rebase success -i
|
||||||
|
test_run_rebase success -p
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user