Merge branch 'jc/make-dedup-ls-files-output'
[gitweb.git] / t / t3507-cherry-pick-conflict.sh
index 777fb23d187d6030f94a862d24d24e47eb011ebc..1a8818fbe02c72164fbaa676c1bc734390f7dbc0 100755 (executable)
@@ -25,6 +25,11 @@ test_expect_success setup '
        test_commit base foo b &&
        test_commit picked foo c &&
        test_commit --signoff picked-signed foo d &&
+       git checkout -b topic initial &&
+       test_commit redundant-pick foo c redundant &&
+       git commit --allow-empty --allow-empty-message &&
+       git tag empty &&
+       git checkout master &&
        git config advice.detachedhead false
 
 '
@@ -189,6 +194,46 @@ test_expect_success 'failed cherry-pick registers participants in index' '
        test_cmp expected actual
 '
 
+test_expect_success \
+       'cherry-pick conflict, ensure commit.cleanup = scissors places scissors line properly' '
+       pristine_detach initial &&
+       git config commit.cleanup scissors &&
+       cat <<-EOF >expected &&
+               picked
+
+               # ------------------------ >8 ------------------------
+               # Do not modify or remove the line above.
+               # Everything below it will be ignored.
+               #
+               # Conflicts:
+               #       foo
+               EOF
+
+       test_must_fail git cherry-pick picked &&
+
+       test_i18ncmp expected .git/MERGE_MSG
+'
+
+test_expect_success \
+       'cherry-pick conflict, ensure cleanup=scissors places scissors line properly' '
+       pristine_detach initial &&
+       git config --unset commit.cleanup &&
+       cat <<-EOF >expected &&
+               picked
+
+               # ------------------------ >8 ------------------------
+               # Do not modify or remove the line above.
+               # Everything below it will be ignored.
+               #
+               # Conflicts:
+               #       foo
+               EOF
+
+       test_must_fail git cherry-pick --cleanup=scissors picked &&
+
+       test_i18ncmp expected .git/MERGE_MSG
+'
+
 test_expect_success 'failed cherry-pick describes conflict in work tree' '
        pristine_detach initial &&
        cat <<-EOF >expected &&
@@ -335,6 +380,52 @@ test_expect_success 'revert conflict, diff3 -m style' '
        test_cmp expected actual
 '
 
+test_expect_success \
+       'revert conflict, ensure commit.cleanup = scissors places scissors line properly' '
+       pristine_detach initial &&
+       git config commit.cleanup scissors &&
+       cat >expected <<-EOF &&
+               Revert "picked"
+
+               This reverts commit OBJID.
+
+               # ------------------------ >8 ------------------------
+               # Do not modify or remove the line above.
+               # Everything below it will be ignored.
+               #
+               # Conflicts:
+               #       foo
+               EOF
+
+       test_must_fail git revert picked &&
+
+       sed "s/$OID_REGEX/OBJID/" .git/MERGE_MSG >actual &&
+       test_i18ncmp expected actual
+'
+
+test_expect_success \
+       'revert conflict, ensure cleanup=scissors places scissors line properly' '
+       pristine_detach initial &&
+       git config --unset commit.cleanup &&
+       cat >expected <<-EOF &&
+               Revert "picked"
+
+               This reverts commit OBJID.
+
+               # ------------------------ >8 ------------------------
+               # Do not modify or remove the line above.
+               # Everything below it will be ignored.
+               #
+               # Conflicts:
+               #       foo
+               EOF
+
+       test_must_fail git revert --cleanup=scissors picked &&
+
+       sed "s/$OID_REGEX/OBJID/" .git/MERGE_MSG >actual &&
+       test_i18ncmp expected actual
+'
+
 test_expect_success 'failed cherry-pick does not forget -s' '
        pristine_detach initial &&
        test_must_fail git cherry-pick -s picked &&
@@ -405,4 +496,23 @@ test_expect_success 'cherry-pick preserves sparse-checkout' '
        test_i18ngrep ! "Changes not staged for commit:" actual
 '
 
+test_expect_success 'cherry-pick --continue remembers --keep-redundant-commits' '
+       test_when_finished "git cherry-pick --abort || :" &&
+       pristine_detach initial &&
+       test_must_fail git cherry-pick --keep-redundant-commits picked redundant &&
+       echo c >foo &&
+       git add foo &&
+       git cherry-pick --continue
+'
+
+test_expect_success 'cherry-pick --continue remembers --allow-empty and --allow-empty-message' '
+       test_when_finished "git cherry-pick --abort || :" &&
+       pristine_detach initial &&
+       test_must_fail git cherry-pick --allow-empty --allow-empty-message \
+                                      picked empty &&
+       echo c >foo &&
+       git add foo &&
+       git cherry-pick --continue
+'
+
 test_done