Code

tests: eliminate unnecessary setup test assertions
authorJonathan Nieder <jrnieder@gmail.com>
Fri, 6 May 2011 20:58:52 +0000 (15:58 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 6 May 2011 21:42:06 +0000 (14:42 -0700)
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>
t/t6010-merge-base.sh
t/t7600-merge.sh

index 082032edc36268f1b8e26ca6f409080093ac0f2b..f80bba871cb45a4afb098c96e7925b6361cf7f95 100755 (executable)
@@ -8,38 +8,38 @@ test_description='Merge base and parent list computation.
 
 . ./test-lib.sh
 
-test_expect_success 'setup' '
-       T=$(git write-tree) &&
+M=1130000000
+Z=+0000
 
-       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
 
-       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 &&
 
-       doit() {
-               OFFSET=$1 &&
-               NAME=$2 &&
-               shift 2 &&
+       PARENTS= &&
+       for P
+       do
+               PARENTS="${PARENTS}-p $P "
+       done &&
 
-               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 &&
 
-               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) &&
 
-               commit=$(echo $NAME | git commit-tree $T $PARENTS) &&
+       echo $commit >.git/refs/tags/$NAME &&
+       echo $commit
+}
 
-               echo $commit >.git/refs/tags/$NAME &&
-               echo $commit
-       }
+test_expect_success 'setup' '
+       T=$(git mktree </dev/null)
 '
 
 test_expect_success 'set up G and H' '
index 87d5d788cb1884fdfe218ec30582f5d3da8b5d7d..c665acdd0a128667a93c57a7942c5bd7a44b2d8b 100755 (executable)
@@ -28,80 +28,78 @@ Testing basic merge operations/option parsing.
 
 . ./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 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 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 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 &&
-
-       create_merge_msgs() {
-               echo "Merge commit '\''c2'\''" >msg.1-5 &&
-               echo "Merge commit '\''c2'\''; commit '\''c3'\''" >msg.1-5-9 &&
-               {
-                       echo "Squashed commit of the following:" &&
-                       echo &&
-                       git log --no-merges ^HEAD c1
-               } >squash.1 &&
-               {
-                       echo "Squashed commit of the following:" &&
-                       echo &&
-                       git log --no-merges ^HEAD c2
-               } >squash.1-5 &&
-               {
-                       echo "Squashed commit of the following:" &&
-                       echo &&
-                       git log --no-merges ^HEAD c2 c3
-               } >squash.1-5-9 &&
-               echo >msg.nolog &&
-               {
-                       echo "* commit '\''c3'\'':" &&
-                       echo "  commit 3" &&
-                       echo
-               } >msg.log
-       } &&
-
-       verify_merge() {
-               test_cmp "$2" "$1" &&
-               git update-index --refresh &&
-               git diff --exit-code &&
-               if test -n "$3"
-               then
-                       git show -s --pretty=format:%s HEAD >msg.act &&
-                       test_cmp "$3" msg.act
-               fi
-       } &&
-
-       verify_head() {
-               echo "$1" >head.expected &&
-               git rev-parse HEAD >head.actual &&
-               test_cmp head.expected head.actual
-       } &&
-
-       verify_parents() {
-               printf "%s\n" "$@" >parents.expected &&
-               >parents.actual &&
-               i=1 &&
-               while test $i -le $#
-               do
-                       git rev-parse HEAD^$i >>parents.actual &&
-                       i=$(expr $i + 1) ||
-                       return 1
-               done &&
-               test_cmp parents.expected parents.actual
-       } &&
-
-       verify_mergeheads() {
-               printf "%s\n" "$@" >mergehead.expected &&
-               test_cmp mergehead.expected .git/MERGE_HEAD
-       } &&
-
-       verify_no_mergehead() {
-               ! test -e .git/MERGE_HEAD
-       }
-'
+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 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 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 X' >result.1-5-9
+
+create_merge_msgs () {
+       echo "Merge commit 'c2'" >msg.1-5 &&
+       echo "Merge commit 'c2'; commit 'c3'" >msg.1-5-9 &&
+       {
+               echo "Squashed commit of the following:" &&
+               echo &&
+               git log --no-merges ^HEAD c1
+       } >squash.1 &&
+       {
+               echo "Squashed commit of the following:" &&
+               echo &&
+               git log --no-merges ^HEAD c2
+       } >squash.1-5 &&
+       {
+               echo "Squashed commit of the following:" &&
+               echo &&
+               git log --no-merges ^HEAD c2 c3
+       } >squash.1-5-9 &&
+       echo >msg.nolog &&
+       {
+               echo "* commit 'c3':" &&
+               echo "  commit 3" &&
+               echo
+       } >msg.log
+}
+
+verify_merge () {
+       test_cmp "$2" "$1" &&
+       git update-index --refresh &&
+       git diff --exit-code &&
+       if test -n "$3"
+       then
+               git show -s --pretty=format:%s HEAD >msg.act &&
+               test_cmp "$3" msg.act
+       fi
+}
+
+verify_head () {
+       echo "$1" >head.expected &&
+       git rev-parse HEAD >head.actual &&
+       test_cmp head.expected head.actual
+}
+
+verify_parents () {
+       printf '%s\n' "$@" >parents.expected &&
+       >parents.actual &&
+       i=1 &&
+       while test $i -le $#
+       do
+               git rev-parse HEAD^$i >>parents.actual &&
+               i=$(expr $i + 1) ||
+               return 1
+       done &&
+       test_cmp parents.expected parents.actual
+}
+
+verify_mergeheads () {
+       printf '%s\n' "$@" >mergehead.expected &&
+       test_cmp mergehead.expected .git/MERGE_HEAD
+}
+
+verify_no_mergehead () {
+       ! test -e .git/MERGE_HEAD
+}
 
 test_expect_success 'setup' '
        git add file &&