Imported Upstream version 2.30.0
[platform/upstream/git.git] / t / t3405-rebase-malformed.sh
index e5ad67c..860e63e 100755 (executable)
@@ -1,8 +1,9 @@
 #!/bin/sh
 
-test_description='rebase should not insist on git message convention'
+test_description='rebase should handle arbitrary git message'
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-rebase.sh
 
 cat >F <<\EOF
 This is an example of a commit log message
@@ -12,6 +13,11 @@ It has two paragraphs, but its first paragraph is not friendly
 to oneline summary format.
 EOF
 
+cat >G <<\EOF
+commit log message containing a diff
+EOF
+
+
 test_expect_success setup '
 
        >file1 &&
@@ -19,8 +25,10 @@ test_expect_success setup '
        git add file1 file2 &&
        test_tick &&
        git commit -m "Initial commit" &&
+       git branch diff-in-message &&
+       git branch empty-message-merge &&
 
-       git checkout -b side &&
+       git checkout -b multi-line-subject &&
        cat F >file2 &&
        git add file2 &&
        test_tick &&
@@ -28,6 +36,22 @@ test_expect_success setup '
 
        git cat-file commit HEAD | sed -e "1,/^\$/d" >F0 &&
 
+       git checkout diff-in-message &&
+       echo "commit log message containing a diff" >G &&
+       echo "" >>G &&
+       cat G >file2 &&
+       git add file2 &&
+       git diff --cached >>G &&
+       test_tick &&
+       git commit -F G &&
+
+       git cat-file commit HEAD | sed -e "1,/^\$/d" >G0 &&
+
+       git checkout empty-message-merge &&
+       echo file3 >file3 &&
+       git add file3 &&
+       git commit --allow-empty-message -m "" &&
+
        git checkout master &&
 
        echo One >file1 &&
@@ -36,13 +60,31 @@ test_expect_success setup '
        git commit -m "Second commit"
 '
 
-test_expect_success rebase '
+test_expect_success 'rebase commit with multi-line subject' '
 
-       git rebase master side &&
+       git rebase master multi-line-subject &&
        git cat-file commit HEAD | sed -e "1,/^\$/d" >F1 &&
 
        test_cmp F0 F1 &&
        test_cmp F F0
 '
 
+test_expect_success 'rebase commit with diff in message' '
+       git rebase master diff-in-message &&
+       git cat-file commit HEAD | sed -e "1,/^$/d" >G1 &&
+       test_cmp G0 G1 &&
+       test_cmp G G0
+'
+
+test_expect_success 'rebase -m commit with empty message' '
+       git rebase -m master empty-message-merge
+'
+
+test_expect_success 'rebase -i commit with empty message' '
+       git checkout diff-in-message &&
+       set_fake_editor &&
+       test_must_fail env FAKE_COMMIT_MESSAGE=" " FAKE_LINES="reword 1" \
+               git rebase -i HEAD^
+'
+
 test_done