diff options
Diffstat (limited to 't/t7502-commit.sh')
| -rwxr-xr-x | t/t7502-commit.sh | 99 | 
1 files changed, 82 insertions, 17 deletions
| diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh index 284c941247..c25eff9e46 100755 --- a/t/t7502-commit.sh +++ b/t/t7502-commit.sh @@ -154,6 +154,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 +196,56 @@ 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 <<EOF +#! $SHELL_PATH +# kill -TERM command added below. +EOF + +test_expect_success 'a SIGTERM should break locks' ' +	echo >>negative && +	"$SHELL_PATH" -c '\'' +	  echo kill -TERM $$ >> .git/FAKE_EDITOR +	  GIT_EDITOR=.git/FAKE_EDITOR exec git commit -a'\'' && exit 1  # should fail +	! 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_done | 
