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 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 -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
|
||||
|
Loading…
Reference in New Issue
Block a user