Merge branch 'jk/autoident-test'

Fix test breakages by a builder who does not have a valid user name
in his /etc/password entry.

* jk/autoident-test:
  t7502: test early quit from commit with bad ident
  t7502: handle systems where auto-identity is broken
  t7502: drop confusing test_might_fail call
  t7502: narrow checks for author/committer name in template
  t7502: properly quote GIT_EDITOR
  t7502: clean up fake_editor tests
This commit is contained in:
Junio C Hamano 2012-07-27 21:17:00 -07:00
commit 12688bbacf

View File

@ -235,44 +235,56 @@ test_expect_success 'cleanup commit messages (strip,-F,-e): output' '
test_i18ncmp expect actual test_i18ncmp expect actual
' '
echo "# test_expect_success 'message shows author when it is not equal to committer' '
# Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
#" >> expect
test_expect_success 'author different from committer' '
echo >>negative && echo >>negative &&
test_might_fail git commit -e -m "sample" && git commit -e -m "sample" -a &&
head -n 7 .git/COMMIT_EDITMSG >actual && test_i18ngrep \
test_i18ncmp expect actual "^# Author: *A U Thor <author@example.com>\$" \
.git/COMMIT_EDITMSG
' '
mv expect expect.tmp test_expect_success 'setup auto-ident prerequisite' '
sed '$d' < expect.tmp > expect if (sane_unset GIT_COMMITTER_EMAIL &&
rm -f expect.tmp sane_unset GIT_COMMITTER_NAME &&
echo "# Committer: git var GIT_COMMITTER_IDENT); then
#" >> expect test_set_prereq AUTOIDENT
else
test_set_prereq NOAUTOIDENT
fi
'
test_expect_success 'committer is automatic' ' test_expect_success AUTOIDENT 'message shows committer when it is automatic' '
echo >>negative && echo >>negative &&
( (
sane_unset GIT_COMMITTER_EMAIL && sane_unset GIT_COMMITTER_EMAIL &&
sane_unset GIT_COMMITTER_NAME && sane_unset GIT_COMMITTER_NAME &&
# must fail because there is no change git commit -e -m "sample" -a
test_must_fail git commit -e -m "sample"
) && ) &&
head -n 8 .git/COMMIT_EDITMSG | \ # the ident is calculated from the system, so we cannot
sed "s/^# Committer: .*/# Committer:/" >actual # check the actual value, only that it is there
test_i18ncmp expect actual test_i18ngrep "^# Committer: " .git/COMMIT_EDITMSG
' '
pwd=`pwd` write_script .git/FAKE_EDITOR <<EOF
cat >> .git/FAKE_EDITOR << EOF echo editor started > "$(pwd)/.git/result"
#! /bin/sh
echo editor started > "$pwd/.git/result"
exit 0 exit 0
EOF EOF
chmod +x .git/FAKE_EDITOR
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' ' test_expect_success 'do not fire editor in the presence of conflicts' '
@ -293,16 +305,14 @@ test_expect_success 'do not fire editor in the presence of conflicts' '
test_must_fail git cherry-pick -n master && test_must_fail git cherry-pick -n master &&
echo "editor not started" >.git/result && echo "editor not started" >.git/result &&
( (
GIT_EDITOR="$(pwd)/.git/FAKE_EDITOR" && GIT_EDITOR="\"$(pwd)/.git/FAKE_EDITOR\"" &&
export GIT_EDITOR && export GIT_EDITOR &&
test_must_fail git commit test_must_fail git commit
) && ) &&
test "$(cat .git/result)" = "editor not started" test "$(cat .git/result)" = "editor not started"
' '
pwd=`pwd` write_script .git/FAKE_EDITOR <<EOF
cat >.git/FAKE_EDITOR <<EOF
#! $SHELL_PATH
# kill -TERM command added below. # kill -TERM command added below.
EOF EOF
@ -339,13 +349,12 @@ test_expect_success 'A single-liner subject with a token plus colon is not a foo
' '
cat >.git/FAKE_EDITOR <<EOF write_script .git/FAKE_EDITOR <<\EOF
#!$SHELL_PATH mv "$1" "$1.orig"
mv "\$1" "\$1.orig"
( (
echo message echo message
cat "\$1.orig" cat "$1.orig"
) >"\$1" ) >"$1"
EOF EOF
echo '## Custom template' >template echo '## Custom template' >template