t3903: abstract away SHA-1-specific constants
[gitweb.git] / t / t7604-merge-custom-message.sh
index 89619cf44608282efa6d75c2ed93cd3bdc4096fc..cd4f9607dc13ce7acfebc62d67bb4dbf1ef46135 100755 (executable)
@@ -16,16 +16,16 @@ create_merge_msgs() {
 }
 
 test_expect_success 'setup' '
-       echo c0 > c0.c &&
+       echo c0 >c0.c &&
        git add c0.c &&
        git commit -m c0 &&
        git tag c0 &&
-       echo c1 > c1.c &&
+       echo c1 >c1.c &&
        git add c1.c &&
        git commit -m c1 &&
        git tag c1 &&
        git reset --hard c0 &&
-       echo c2 > c2.c &&
+       echo c2 >c2.c &&
        git add c2.c &&
        git commit -m c2 &&
        git tag c2 &&
@@ -36,15 +36,80 @@ test_expect_success 'setup' '
 test_expect_success 'merge c2 with a custom message' '
        git reset --hard c1 &&
        git merge -m "$(cat exp.subject)" c2 &&
-       git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
+       git cat-file commit HEAD >raw &&
+       sed -e "1,/^$/d" raw >actual &&
        test_cmp exp.subject actual
 '
 
 test_expect_success 'merge --log appends to custom message' '
        git reset --hard c1 &&
        git merge --log -m "$(cat exp.subject)" c2 &&
-       git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
+       git cat-file commit HEAD >raw &&
+       sed -e "1,/^$/d" raw >actual &&
        test_cmp exp.log actual
 '
 
+mesg_with_comment_and_newlines='
+# text
+
+'
+
+test_expect_success 'prepare file with comment line and trailing newlines'  '
+       printf "%s" "$mesg_with_comment_and_newlines" >expect
+'
+
+test_expect_success 'cleanup commit messages (verbatim option)' '
+       git reset --hard c1 &&
+       git merge --cleanup=verbatim -F expect c2 &&
+       git cat-file commit HEAD >raw &&
+       sed -e "1,/^$/d" raw >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'cleanup commit messages (whitespace option)' '
+       git reset --hard c1 &&
+       test_write_lines "" "# text" "" >text &&
+       echo "# text" >expect &&
+       git merge --cleanup=whitespace -F text c2 &&
+       git cat-file commit HEAD >raw &&
+       sed -e "1,/^$/d" raw >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'cleanup merge messages (scissors option)' '
+       git reset --hard c1 &&
+       cat >text <<-\EOF &&
+
+       # to be kept
+
+         # ------------------------ >8 ------------------------
+       # to be kept, too
+       # ------------------------ >8 ------------------------
+       to be removed
+       # ------------------------ >8 ------------------------
+       to be removed, too
+       EOF
+
+       cat >expect <<-\EOF &&
+       # to be kept
+
+         # ------------------------ >8 ------------------------
+       # to be kept, too
+       EOF
+       git merge --cleanup=scissors -e -F text c2 &&
+       git cat-file commit HEAD >raw &&
+       sed -e "1,/^$/d" raw >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'cleanup commit messages (strip option)' '
+       git reset --hard c1 &&
+       test_write_lines "" "# text" "sample" "" >text &&
+       echo sample >expect &&
+       git merge --cleanup=strip -F text c2 &&
+       git cat-file commit HEAD >raw &&
+       sed -e "1,/^$/d" raw >actual &&
+       test_cmp expect actual
+'
+
 test_done