This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
101 lines
3.1 KiB
Bash
Executable file
101 lines
3.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='cherry-pick should rerere for conflicts'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success setup '
|
|
test_commit foo &&
|
|
test_commit foo-master foo &&
|
|
test_commit bar-master bar &&
|
|
|
|
git checkout -b dev foo &&
|
|
test_commit foo-dev foo &&
|
|
test_commit bar-dev bar &&
|
|
git config rerere.enabled true
|
|
'
|
|
|
|
test_expect_success 'conflicting merge' '
|
|
test_must_fail git merge master
|
|
'
|
|
|
|
test_expect_success 'fixup' '
|
|
echo foo-resolved >foo &&
|
|
echo bar-resolved >bar &&
|
|
git commit -am resolved &&
|
|
cp foo foo-expect &&
|
|
cp bar bar-expect &&
|
|
git reset --hard HEAD^
|
|
'
|
|
|
|
test_expect_success 'cherry-pick conflict with --rerere-autoupdate' '
|
|
test_must_fail git cherry-pick --rerere-autoupdate foo..bar-master &&
|
|
test_cmp foo-expect foo &&
|
|
git diff-files --quiet &&
|
|
test_must_fail git cherry-pick --continue &&
|
|
test_cmp bar-expect bar &&
|
|
git diff-files --quiet &&
|
|
git cherry-pick --continue &&
|
|
git reset --hard bar-dev
|
|
'
|
|
|
|
test_expect_success 'cherry-pick conflict repsects rerere.autoUpdate' '
|
|
test_config rerere.autoUpdate true &&
|
|
test_must_fail git cherry-pick foo..bar-master &&
|
|
test_cmp foo-expect foo &&
|
|
git diff-files --quiet &&
|
|
test_must_fail git cherry-pick --continue &&
|
|
test_cmp bar-expect bar &&
|
|
git diff-files --quiet &&
|
|
git cherry-pick --continue &&
|
|
git reset --hard bar-dev
|
|
'
|
|
|
|
test_expect_success 'cherry-pick conflict with --no-rerere-autoupdate' '
|
|
test_config rerere.autoUpdate true &&
|
|
test_must_fail git cherry-pick --no-rerere-autoupdate foo..bar-master &&
|
|
test_cmp foo-expect foo &&
|
|
test_must_fail git diff-files --quiet &&
|
|
git add foo &&
|
|
test_must_fail git cherry-pick --continue &&
|
|
test_cmp bar-expect bar &&
|
|
test_must_fail git diff-files --quiet &&
|
|
git add bar &&
|
|
git cherry-pick --continue &&
|
|
git reset --hard bar-dev
|
|
'
|
|
|
|
test_expect_success 'cherry-pick --continue rejects --rerere-autoupdate' '
|
|
test_must_fail git cherry-pick --rerere-autoupdate foo..bar-master &&
|
|
test_cmp foo-expect foo &&
|
|
git diff-files --quiet &&
|
|
test_must_fail git cherry-pick --continue --rerere-autoupdate >actual 2>&1 &&
|
|
echo "fatal: cherry-pick: --rerere-autoupdate cannot be used with --continue" >expect &&
|
|
test_i18ncmp expect actual &&
|
|
test_must_fail git cherry-pick --continue --no-rerere-autoupdate >actual 2>&1 &&
|
|
echo "fatal: cherry-pick: --no-rerere-autoupdate cannot be used with --continue" >expect &&
|
|
test_i18ncmp expect actual &&
|
|
git cherry-pick --abort
|
|
'
|
|
|
|
test_expect_success 'cherry-pick --rerere-autoupdate more than once' '
|
|
test_must_fail git cherry-pick --rerere-autoupdate --rerere-autoupdate foo..bar-master &&
|
|
test_cmp foo-expect foo &&
|
|
git diff-files --quiet &&
|
|
git cherry-pick --abort &&
|
|
test_must_fail git cherry-pick --rerere-autoupdate --no-rerere-autoupdate --rerere-autoupdate foo..bar-master &&
|
|
test_cmp foo-expect foo &&
|
|
git diff-files --quiet &&
|
|
git cherry-pick --abort &&
|
|
test_must_fail git cherry-pick --rerere-autoupdate --no-rerere-autoupdate foo..bar-master &&
|
|
test_must_fail git diff-files --quiet &&
|
|
git cherry-pick --abort
|
|
'
|
|
|
|
test_expect_success 'cherry-pick conflict without rerere' '
|
|
test_config rerere.enabled false &&
|
|
test_must_fail git cherry-pick master &&
|
|
test_must_fail test_cmp expect foo
|
|
'
|
|
|
|
test_done
|