git-commit: populate the edit buffer with 2 blank lines before s-o-b
[gitweb.git] / t / t7502-commit.sh
index d261b8252a8e8b474d57e13e25f0eb53a446c234..c06a7526c127eff62a46a86490bea942eeead2c8 100755 (executable)
@@ -243,14 +243,23 @@ test_expect_success 'message shows author when it is not equal to committer' '
          .git/COMMIT_EDITMSG
 '
 
-test_expect_success 'message shows committer when it is automatic' '
+test_expect_success 'setup auto-ident prerequisite' '
+       if (sane_unset GIT_COMMITTER_EMAIL &&
+           sane_unset GIT_COMMITTER_NAME &&
+           git var GIT_COMMITTER_IDENT); then
+               test_set_prereq AUTOIDENT
+       else
+               test_set_prereq NOAUTOIDENT
+       fi
+'
+
+test_expect_success AUTOIDENT 'message shows committer when it is automatic' '
 
        echo >>negative &&
        (
                sane_unset GIT_COMMITTER_EMAIL &&
                sane_unset GIT_COMMITTER_NAME &&
-               # must fail because there is no change
-               test_must_fail git commit -e -m "sample"
+               git commit -e -m "sample" -a
        ) &&
        # the ident is calculated from the system, so we cannot
        # check the actual value, only that it is there
@@ -262,6 +271,21 @@ echo editor started > "$(pwd)/.git/result"
 exit 0
 EOF
 
+test_expect_success NOAUTOIDENT 'do not fire editor when committer is bogus' '
+       >.git/result
+       >expect &&
+
+       echo >>negative &&
+       (
+               sane_unset GIT_COMMITTER_EMAIL &&
+               sane_unset GIT_COMMITTER_NAME &&
+               GIT_EDITOR="\"$(pwd)/.git/FAKE_EDITOR\"" &&
+               export GIT_EDITOR &&
+               test_must_fail git commit -e -m sample -a
+       ) &&
+       test_cmp expect .git/result
+'
+
 test_expect_success 'do not fire editor in the presence of conflicts' '
 
        git clean -f &&
@@ -325,6 +349,18 @@ test_expect_success 'A single-liner subject with a token plus colon is not a foo
 
 '
 
+test_expect_success 'commit -s places sob on third line after two empty lines' '
+       git commit -s --allow-empty --allow-empty-message &&
+       cat <<-EOF >expect &&
+
+
+       Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
+
+       EOF
+       sed -e "/^#/d" -e "s/^:.*//" .git/COMMIT_EDITMSG >actual &&
+       test_cmp expect actual
+'
+
 write_script .git/FAKE_EDITOR <<\EOF
 mv "$1" "$1.orig"
 (