X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=t%2Ft7502-commit.sh;h=ad42c78d7c21497a6ebb4e9cef4efd6334f947da;hb=25dfd1b925f51a88b00cf0c84c690d448395c30f;hp=284c9412474754be649ccc51df996e3e370ac6ec;hpb=f23ffbe890d36e277f02d4a84c2b52de3a4e3173;p=git.git diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh index 284c94124..fe9455229 100755 --- a/t/t7502-commit.sh +++ b/t/t7502-commit.sh @@ -89,6 +89,14 @@ test_expect_success 'verbose' ' ' +test_expect_success 'verbose respects diff config' ' + + git config color.diff always && + git status -v >actual && + grep "\[1mdiff --git" actual && + git config --unset color.diff +' + test_expect_success 'cleanup commit messages (verbatim,-t)' ' echo >>negative && @@ -141,8 +149,8 @@ test_expect_success 'cleanup commit messages (strip,-F)' ' echo "sample -# Please enter the commit message for your changes. -# (Comment lines starting with '#' will not be included)" >expect +# Please enter the commit message for your changes. Lines starting +# with '#' will be ignored, and an empty message aborts the commit." >expect test_expect_success 'cleanup commit messages (strip,-F,-e)' ' @@ -154,6 +162,38 @@ test_expect_success 'cleanup commit messages (strip,-F,-e)' ' ' +echo "# +# Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> +#" >> expect + +test_expect_success 'author different from committer' ' + + echo >>negative && + git commit -e -m "sample" + head -n 7 .git/COMMIT_EDITMSG >actual && + test_cmp expect actual +' + +mv expect expect.tmp +sed '$d' < expect.tmp > expect +rm -f expect.tmp +echo "# Committer: +#" >> expect + +test_expect_success 'committer is automatic' ' + + echo >>negative && + ( + unset GIT_COMMITTER_EMAIL + unset GIT_COMMITTER_NAME + # must fail because there is no change + test_must_fail git commit -e -m "sample" + ) && + head -n 8 .git/COMMIT_EDITMSG | \ + sed "s/^# Committer: .*/# Committer:/" >actual && + test_cmp expect actual +' + pwd=`pwd` cat >> .git/FAKE_EDITOR << EOF #! /bin/sh @@ -164,23 +204,67 @@ chmod +x .git/FAKE_EDITOR test_expect_success 'do not fire editor in the presence of conflicts' ' - git clean - echo f>g - git add g - git commit -myes - git branch second - echo master>g - echo g>h - git add g h - git commit -mmaster - git checkout second - echo second>g - git add g - git commit -msecond - git cherry-pick -n master - echo "editor not started" > .git/result - GIT_EDITOR=`pwd`/.git/FAKE_EDITOR git commit && exit 1 # should fail - test "`cat .git/result`" = "editor not started" + git clean -f && + echo f >g && + git add g && + git commit -m "add g" && + git branch second && + echo master >g && + echo g >h && + git add g h && + git commit -m "modify g and add h" && + git checkout second && + echo second >g && + git add g && + git commit -m second && + # Must fail due to conflict + test_must_fail git cherry-pick -n master && + echo "editor not started" >.git/result && + ( + GIT_EDITOR="$(pwd)/.git/FAKE_EDITOR" && + export GIT_EDITOR && + test_must_fail git commit + ) && + test "$(cat .git/result)" = "editor not started" +' + +pwd=`pwd` +cat >.git/FAKE_EDITOR <>negative && + ! "$SHELL_PATH" -c '\'' + echo kill -TERM $$ >> .git/FAKE_EDITOR + GIT_EDITOR=.git/FAKE_EDITOR + export GIT_EDITOR + exec git commit -a'\'' && + test ! -f .git/index.lock +' + +rm -f .git/MERGE_MSG .git/COMMIT_EDITMSG +git reset -q --hard + +test_expect_success 'Hand committing of a redundant merge removes dups' ' + + git rev-parse second master >expect && + test_must_fail git merge second master && + git checkout master g && + EDITOR=: git commit -a && + git cat-file commit HEAD | sed -n -e "s/^parent //p" -e "/^$/q" >actual && + test_cmp expect actual + +' + +test_expect_success 'A single-liner subject with a token plus colon is not a footer' ' + + git reset --hard && + git commit -s -m "hello: kitty" --allow-empty && + git cat-file commit HEAD | sed -e "1,/^$/d" >actual && + test $(wc -l