tests: eliminate unnecessary setup test assertions

Most of git's tests write files and define shell functions and
variables that will last throughout a test script at the top of
the script, before all test assertions:

	. ./test-lib.sh

	VAR='some value'
	export VAR

	>empty

	fn () {
		do something
	}

	test_expect_success 'setup' '
		... nontrivial commands go here ...
	'

Two scripts use a different style with this kind of trivial code
enclosed by a test assertion; fix them.  The usual style is easier to
read since there is less indentation to keep track of and no need to
worry about nested quotes; and on the other hand, because the commands
in question are trivial, it should not make the test suite any worse
at catching future bugs in git.

While at it, make some other small tweaks:

 - spell function definitions with a space before () for consistency
   with other scripts;

 - use the self-contained command "git mktree </dev/null" in
   preference to "git write-tree" which looks at the index when
   writing an empty tree.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jonathan Nieder 2011-05-06 15:58:52 -05:00 committed by Junio C Hamano
parent ec014eac0e
commit 73151df0cf
2 changed files with 97 additions and 99 deletions

View File

@ -8,38 +8,38 @@ test_description='Merge base and parent list computation.
. ./test-lib.sh . ./test-lib.sh
M=1130000000
Z=+0000
GIT_COMMITTER_EMAIL=git@comm.iter.xz
GIT_COMMITTER_NAME='C O Mmiter'
GIT_AUTHOR_NAME='A U Thor'
GIT_AUTHOR_EMAIL=git@au.thor.xz
export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
doit () {
OFFSET=$1 &&
NAME=$2 &&
shift 2 &&
PARENTS= &&
for P
do
PARENTS="${PARENTS}-p $P "
done &&
GIT_COMMITTER_DATE="$(($M + $OFFSET)) $Z" &&
GIT_AUTHOR_DATE=$GIT_COMMITTER_DATE &&
export GIT_COMMITTER_DATE GIT_AUTHOR_DATE &&
commit=$(echo $NAME | git commit-tree $T $PARENTS) &&
echo $commit >.git/refs/tags/$NAME &&
echo $commit
}
test_expect_success 'setup' ' test_expect_success 'setup' '
T=$(git write-tree) && T=$(git mktree </dev/null)
M=1130000000 &&
Z=+0000 &&
GIT_COMMITTER_EMAIL=git@comm.iter.xz &&
GIT_COMMITTER_NAME="C O Mmiter" &&
GIT_AUTHOR_NAME="A U Thor" &&
GIT_AUTHOR_EMAIL=git@au.thor.xz &&
export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL &&
doit() {
OFFSET=$1 &&
NAME=$2 &&
shift 2 &&
PARENTS= &&
for P
do
PARENTS="${PARENTS}-p $P "
done &&
GIT_COMMITTER_DATE="$(($M + $OFFSET)) $Z" &&
GIT_AUTHOR_DATE=$GIT_COMMITTER_DATE &&
export GIT_COMMITTER_DATE GIT_AUTHOR_DATE &&
commit=$(echo $NAME | git commit-tree $T $PARENTS) &&
echo $commit >.git/refs/tags/$NAME &&
echo $commit
}
' '
test_expect_success 'set up G and H' ' test_expect_success 'set up G and H' '

View File

@ -28,80 +28,78 @@ Testing basic merge operations/option parsing.
. ./test-lib.sh . ./test-lib.sh
test_expect_success 'set up test data and helpers' ' printf '%s\n' 1 2 3 4 5 6 7 8 9 >file
printf "%s\n" 1 2 3 4 5 6 7 8 9 >file && printf '%s\n' '1 X' 2 3 4 5 6 7 8 9 >file.1
printf "%s\n" "1 X" 2 3 4 5 6 7 8 9 >file.1 && printf '%s\n' 1 2 3 4 '5 X' 6 7 8 9 >file.5
printf "%s\n" 1 2 3 4 "5 X" 6 7 8 9 >file.5 && printf '%s\n' 1 2 3 4 5 6 7 8 '9 X' >file.9
printf "%s\n" 1 2 3 4 5 6 7 8 "9 X" >file.9 && printf '%s\n' '1 X' 2 3 4 5 6 7 8 9 >result.1
printf "%s\n" "1 X" 2 3 4 5 6 7 8 9 >result.1 && printf '%s\n' '1 X' 2 3 4 '5 X' 6 7 8 9 >result.1-5
printf "%s\n" "1 X" 2 3 4 "5 X" 6 7 8 9 >result.1-5 && printf '%s\n' '1 X' 2 3 4 '5 X' 6 7 8 '9 X' >result.1-5-9
printf "%s\n" "1 X" 2 3 4 "5 X" 6 7 8 "9 X" >result.1-5-9 &&
create_merge_msgs() { create_merge_msgs () {
echo "Merge commit '\''c2'\''" >msg.1-5 && echo "Merge commit 'c2'" >msg.1-5 &&
echo "Merge commit '\''c2'\''; commit '\''c3'\''" >msg.1-5-9 && echo "Merge commit 'c2'; commit 'c3'" >msg.1-5-9 &&
{ {
echo "Squashed commit of the following:" && echo "Squashed commit of the following:" &&
echo && echo &&
git log --no-merges ^HEAD c1 git log --no-merges ^HEAD c1
} >squash.1 && } >squash.1 &&
{ {
echo "Squashed commit of the following:" && echo "Squashed commit of the following:" &&
echo && echo &&
git log --no-merges ^HEAD c2 git log --no-merges ^HEAD c2
} >squash.1-5 && } >squash.1-5 &&
{ {
echo "Squashed commit of the following:" && echo "Squashed commit of the following:" &&
echo && echo &&
git log --no-merges ^HEAD c2 c3 git log --no-merges ^HEAD c2 c3
} >squash.1-5-9 && } >squash.1-5-9 &&
echo >msg.nolog && echo >msg.nolog &&
{ {
echo "* commit '\''c3'\'':" && echo "* commit 'c3':" &&
echo " commit 3" && echo " commit 3" &&
echo echo
} >msg.log } >msg.log
} && }
verify_merge() { verify_merge () {
test_cmp "$2" "$1" && test_cmp "$2" "$1" &&
git update-index --refresh && git update-index --refresh &&
git diff --exit-code && git diff --exit-code &&
if test -n "$3" if test -n "$3"
then then
git show -s --pretty=format:%s HEAD >msg.act && git show -s --pretty=format:%s HEAD >msg.act &&
test_cmp "$3" msg.act test_cmp "$3" msg.act
fi fi
} && }
verify_head() { verify_head () {
echo "$1" >head.expected && echo "$1" >head.expected &&
git rev-parse HEAD >head.actual && git rev-parse HEAD >head.actual &&
test_cmp head.expected head.actual test_cmp head.expected head.actual
} && }
verify_parents() { verify_parents () {
printf "%s\n" "$@" >parents.expected && printf '%s\n' "$@" >parents.expected &&
>parents.actual && >parents.actual &&
i=1 && i=1 &&
while test $i -le $# while test $i -le $#
do do
git rev-parse HEAD^$i >>parents.actual && git rev-parse HEAD^$i >>parents.actual &&
i=$(expr $i + 1) || i=$(expr $i + 1) ||
return 1 return 1
done && done &&
test_cmp parents.expected parents.actual test_cmp parents.expected parents.actual
} && }
verify_mergeheads() { verify_mergeheads () {
printf "%s\n" "$@" >mergehead.expected && printf '%s\n' "$@" >mergehead.expected &&
test_cmp mergehead.expected .git/MERGE_HEAD test_cmp mergehead.expected .git/MERGE_HEAD
} && }
verify_no_mergehead() { verify_no_mergehead () {
! test -e .git/MERGE_HEAD ! test -e .git/MERGE_HEAD
} }
'
test_expect_success 'setup' ' test_expect_success 'setup' '
git add file && git add file &&