[PATCH] t5500: Modernize test style

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Code outside of the test harness was emitting "Initializing..." from
git-init. Fixup this test to be more modern:

    - test_expect_object_count() and count_objects() are unused

    - use grep directly instead of test "..." = $(grep ...)

    - end the test_expect_success line with a single-quote and put the
      test on a new line

    - put as much code inside the test harness as possible

    - no_strict_count_check is unused and duplicates the test
      "new object count"

    - use && whenever possible to catch errors early

    - use test_tick instead of GIT_AUTHOR_DATE=$sec

    - remove debugging aid log.txt

    - use subshells instead of cd-ing around

Also merge the pull test into one large test.

Signed-off-by: Stephen Boyd <bebarino@xxxxxxxxx>
---

This is a major rewrite, and probably code churn.

 t/t5500-fetch-pack.sh |  276 ++++++++++++++++++++++++++----------------------
 1 files changed, 149 insertions(+), 127 deletions(-)

diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
index c450f33..a8c2ca2 100755
--- a/t/t5500-fetch-pack.sh
+++ b/t/t5500-fetch-pack.sh
@@ -3,9 +3,8 @@
 # Copyright (c) 2005 Johannes Schindelin
 #
 
-test_description='Testing multi_ack pack fetching
+test_description='Testing multi_ack pack fetching'
 
-'
 . ./test-lib.sh
 
 # Test fetch-pack/upload-pack pair.
@@ -13,77 +12,60 @@ test_description='Testing multi_ack pack fetching
 # Some convenience functions
 
 add () {
-	name=$1
-	text="$@"
-	branch=`echo $name | sed -e 's/^\(.\).*$/\1/'`
-	parents=""
+	name=$1 &&
+	text="$@" &&
+	branch=`echo $name | sed -e 's/^\(.\).*$/\1/'` &&
+	parents="" &&
 
-	shift
+	shift &&
 	while test $1; do
-		parents="$parents -p $1"
+		parents="$parents -p $1" &&
 		shift
-	done
+	done &&
 
-	echo "$text" > test.txt
-	git update-index --add test.txt
-	tree=$(git write-tree)
+	echo "$text" > test.txt &&
+	git update-index --add test.txt &&
+	tree=$(git write-tree) &&
 	# make sure timestamps are in correct order
-	sec=$(($sec+1))
-	commit=$(echo "$text" | GIT_AUTHOR_DATE=$sec \
-		git commit-tree $tree $parents 2>>log2.txt)
-	eval "$name=$commit; export $name"
-	echo $commit > .git/refs/heads/$branch
+	test_tick &&
+	commit=$(echo "$text" | git commit-tree $tree $parents) &&
+	eval "$name=$commit; export $name" &&
+	echo $commit > .git/refs/heads/$branch &&
 	eval ${branch}TIP=$commit
 }
 
-count_objects () {
-	ls .git/objects/??/* 2>>log2.txt | wc -l | tr -d " "
-}
-
-test_expect_object_count () {
-	message=$1
-	count=$2
-
-	output="$(count_objects)"
-	test_expect_success \
-		"new object count $message" \
-		"test $count = $output"
-}
-
 pull_to_client () {
-	number=$1
-	heads=$2
-	count=$3
-	no_strict_count_check=$4
-
-	cd client
-	test_expect_success "$number pull" \
-		"git fetch-pack -k -v .. $heads"
-	case "$heads" in *A*) echo $ATIP > .git/refs/heads/A;; esac
-	case "$heads" in *B*) echo $BTIP > .git/refs/heads/B;; esac
-	git symbolic-ref HEAD refs/heads/`echo $heads | sed -e 's/^\(.\).*$/\1/'`
-
-	test_expect_success "fsck" 'git fsck --full > fsck.txt 2>&1'
-
-	test_expect_success 'check downloaded results' \
-	'mv .git/objects/pack/pack-* . &&
-	 p=`ls -1 pack-*.pack` &&
-	 git unpack-objects <$p &&
-	 git fsck --full'
-
-	test_expect_success "new object count after $number pull" \
-	'idx=`echo pack-*.idx` &&
-	 pack_count=`git show-index <$idx | wc -l` &&
-	 test $pack_count = $count'
-	test -z "$pack_count" && pack_count=0
-	if [ -z "$no_strict_count_check" ]; then
-		test_expect_success "minimal count" "test $count = $pack_count"
-	else
-		test $count != $pack_count && \
-			echo "WARNING: $pack_count objects transmitted, only $count of which were needed"
-	fi
-	rm -f pack-*
-	cd ..
+	number=$1 &&
+	heads=$2 &&
+	count=$3 &&
+	test_expect_success "$number pull" '
+		(
+			cd client &&
+			git fetch-pack -k -v .. $heads &&
+
+			case "$heads" in
+			    *A*)
+				    echo $ATIP > .git/refs/heads/A;;
+			esac &&
+			case "$heads" in *B*)
+			    echo $BTIP > .git/refs/heads/B;;
+			esac &&
+			git symbolic-ref HEAD refs/heads/`echo $heads \
+				| sed -e "s/^\(.\).*$/\1/"` &&
+
+			git fsck --full &&
+
+			mv .git/objects/pack/pack-* . &&
+			p=`ls -1 pack-*.pack` &&
+			git unpack-objects <$p &&
+			git fsck --full &&
+
+			idx=`echo pack-*.idx` &&
+			pack_count=`git show-index <$idx | wc -l` &&
+			test $pack_count = $count &&
+			rm -f pack-*
+		)
+	'
 }
 
 # Here begins the actual testing
@@ -94,89 +76,129 @@ pull_to_client () {
 
 # client pulls A20, B1. Then tracks only B. Then pulls A.
 
-(
+test_expect_success 'setup' '
 	mkdir client &&
-	cd client &&
-	git init 2>> log2.txt &&
-	git config transfer.unpacklimit 0
-)
-
-add A1
-
-prev=1; cur=2; while [ $cur -le 10 ]; do
-	add A$cur $(eval echo \$A$prev)
-	prev=$cur
-	cur=$(($cur+1))
-done
-
-add B1 $A1
-
-echo $ATIP > .git/refs/heads/A
-echo $BTIP > .git/refs/heads/B
-git symbolic-ref HEAD refs/heads/B
+	(
+		cd client &&
+		git init &&
+		git config transfer.unpacklimit 0
+	) &&
+	add A1 &&
+	prev=1 &&
+	cur=2 &&
+	while [ $cur -le 10 ]; do
+		add A$cur $(eval echo \$A$prev) &&
+		prev=$cur &&
+		cur=$(($cur+1))
+	done &&
+	add B1 $A1
+	echo $ATIP > .git/refs/heads/A &&
+	echo $BTIP > .git/refs/heads/B &&
+	git symbolic-ref HEAD refs/heads/B
+'
 
 pull_to_client 1st "B A" $((11*3))
 
-add A11 $A10
-
-prev=1; cur=2; while [ $cur -le 65 ]; do
-	add B$cur $(eval echo \$B$prev)
-	prev=$cur
-	cur=$(($cur+1))
-done
+test_expect_success 'post 1st pull setup' '
+	add A11 $A10 &&
+	prev=1 &&
+	cur=2 &&
+	while [ $cur -le 65 ]; do
+		add B$cur $(eval echo \$B$prev) &&
+		prev=$cur &&
+		cur=$(($cur+1))
+	done
+'
 
 pull_to_client 2nd "B" $((64*3))
 
-pull_to_client 3rd "A" $((1*3)) # old fails
-
-test_expect_success "clone shallow" 'git clone --depth 2 "file://$(pwd)/." shallow'
+pull_to_client 3rd "A" $((1*3))
 
-(cd shallow; git count-objects -v) > count.shallow
-
-test_expect_success "clone shallow object count" \
-	"test \"in-pack: 18\" = \"$(grep in-pack count.shallow)\""
-
-count_output () {
-	sed -e '/^in-pack:/d' -e '/^packs:/d' -e '/^size-pack:/d' -e '/: 0$/d' "$1"
-}
+test_expect_success 'clone shallow' '
+	git clone --depth 2 "file://$(pwd)/." shallow
+'
 
-test_expect_success "clone shallow object count (part 2)" '
-	test -z "$(count_output count.shallow)"
+test_expect_success 'clone shallow object count' '
+	(
+		cd shallow &&
+		git count-objects -v
+	) > count.shallow &&
+	grep "^in-pack: 18" count.shallow
 '
 
-test_expect_success "fsck in shallow repo" \
-	"(cd shallow; git fsck --full)"
+test_expect_success 'clone shallow object count (part 2)' '
+	sed -e "/^in-pack:/d" -e "/^packs:/d" -e "/^size-pack:/d" \
+	    -e "/: 0$/d" count.shallow > count_output &&
+	! test -s count_output
+'
 
-#test_done; exit
+test_expect_success 'fsck in shallow repo' '
+	(
+		cd shallow &&
+		git fsck --full
+	)
+'
 
-add B66 $B65
-add B67 $B66
+test_expect_success 'add two more' '
+	add B66 $B65 &&
+	add B67 $B66
+'
 
-test_expect_success "pull in shallow repo" \
-	"(cd shallow; git pull .. B)"
+test_expect_success 'pull in shallow repo' '
+	(
+		cd shallow &&
+		git pull .. B
+	)
+'
 
-(cd shallow; git count-objects -v) > count.shallow
-test_expect_success "clone shallow object count" \
-	"test \"count: 6\" = \"$(grep count count.shallow)\""
+test_expect_success 'clone shallow object count' '
+	(
+		cd shallow &&
+		git count-objects -v
+	) > count.shallow &&
+	grep "^count: 6" count.shallow
+'
 
-add B68 $B67
-add B69 $B68
+test_expect_success 'add two more (part 2)' '
+	add B68 $B67 &&
+	add B69 $B68
+'
 
-test_expect_success "deepening pull in shallow repo" \
-	"(cd shallow; git pull --depth 4 .. B)"
+test_expect_success 'deepening pull in shallow repo' '
+	(
+		cd shallow &&
+		git pull --depth 4 .. B
+	)
+'
 
-(cd shallow; git count-objects -v) > count.shallow
-test_expect_success "clone shallow object count" \
-	"test \"count: 12\" = \"$(grep count count.shallow)\""
+test_expect_success 'clone shallow object count' '
+	(
+		cd shallow &&
+		git count-objects -v
+	) > count.shallow &&
+	grep "^count: 12" count.shallow
+'
 
-test_expect_success "deepening fetch in shallow repo" \
-	"(cd shallow; git fetch --depth 4 .. A:A)"
+test_expect_success 'deepening fetch in shallow repo' '
+	(
+		cd shallow &&
+		git fetch --depth 4 .. A:A
+	)
+'
 
-(cd shallow; git count-objects -v) > count.shallow
-test_expect_success "clone shallow object count" \
-	"test \"count: 18\" = \"$(grep count count.shallow)\""
+test_expect_success 'clone shallow object count' '
+	(
+		cd shallow &&
+		git count-objects -v
+	) > count.shallow &&
+	grep "^count: 18" count.shallow
+'
 
-test_expect_success "pull in shallow repo with missing merge base" \
-	"(cd shallow && test_must_fail git pull --depth 4 .. A)"
+test_expect_success 'pull in shallow repo with missing merge base' '
+	(
+		cd shallow &&
+		test_must_fail git pull --depth 4 .. A
+	)
+'
 
 test_done
-- 
1.6.3.1.152.g9619f

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]