diff options
| author | John Keeping <john@keeping.me.uk> | 2013-04-01 15:09:05 +0100 | 
|---|---|---|
| committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2013-04-08 22:27:11 +0200 | 
| commit | c95cc5ec56dbb7394015eb18201403be6d80f69b (patch) | |
| tree | 7014b96a1a1408b5291532c0c442082aba693a80 /tests/setup.sh | |
| parent | Do not load user or system gitconfig and gitattributes (diff) | |
| download | cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.tar.gz cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.tar.bz2 cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.zip | |
tests: use Git's test framework
This allows tests to run in parallel as well as letting us use "prove"
or another TAP harness to run the tests.
Git's test framework requires Git to be fully built before letting any
tests run, so add a new target to the top-level Makefile which builds
all of Git instead of just libgit.a and make the "test" target depend on
that.
Signed-off-by: John Keeping <john@keeping.me.uk>
Diffstat (limited to '')
| -rwxr-xr-x | tests/setup.sh | 130 | 
1 files changed, 41 insertions, 89 deletions
| diff --git a/tests/setup.sh b/tests/setup.sh index e3c6c17..81e7220 100755 --- a/tests/setup.sh +++ b/tests/setup.sh @@ -15,46 +15,48 @@  # run_test 'repo index' 'cgit_url "/" | tidy -e'  # run_test 'repo summary' 'cgit_url "/foo" | tidy -e' -unset CDPATH +: ${TEST_DIRECTORY=$(pwd)/../git/t} +TEST_NO_CREATE_REPO=YesPlease +. "$TEST_DIRECTORY"/test-lib.sh + +# Prepend the directory containing cgit to PATH. +PATH="$(pwd)/../..:$PATH"  mkrepo() {  	name=$1  	count=$2 -	dir=$PWD -	test -d "$name" && return -	printf "Creating testrepo %s\n" "$name" -	mkdir -p "$name" -	cd "$name" -	git init -	n=1 -	while test $n -le $count -	do -		echo $n >file-$n -		git add file-$n -		git commit -m "commit $n" -		n=$(expr $n + 1) -	done -	if test "$3" = "testplus" -	then -		echo "hello" >a+b -		git add a+b -		git commit -m "add a+b" -		git branch "1+2" -	fi -	cd "$dir" +	test_create_repo "$name" +	( +		cd "$name" +		n=1 +		while test $n -le $count +		do +			echo $n >file-$n +			git add file-$n +			git commit -m "commit $n" +			n=$(expr $n + 1) +		done +		if test "$3" = "testplus" +		then +			echo "hello" >a+b +			git add a+b +			git commit -m "add a+b" +			git branch "1+2" +		fi +	)  }  setup_repos()  { -	rm -rf trash/cache -	mkdir -p trash/cache -	mkrepo trash/repos/foo 5 >/dev/null -	mkrepo trash/repos/bar 50 >/dev/null -	mkrepo trash/repos/foo+bar 10 testplus >/dev/null -	mkrepo "trash/repos/with space" 2 >/dev/null -	cat >trash/cgitrc <<EOF +	rm -rf cache +	mkdir -p cache +	mkrepo repos/foo 5 >/dev/null +	mkrepo repos/bar 50 >/dev/null +	mkrepo repos/foo+bar 10 testplus >/dev/null +	mkrepo "repos/with space" 2 >/dev/null +	cat >cgitrc <<EOF  virtual-root=/ -cache-root=$PWD/trash/cache +cache-root=$PWD/cache  cache-size=1021  snapshots=tar.gz tar.bz zip @@ -66,83 +68,33 @@ summary-tags=5  clone-url=git://example.org/\$CGIT_REPO_URL.git  repo.url=foo -repo.path=$PWD/trash/repos/foo/.git +repo.path=$PWD/repos/foo/.git  # Do not specify a description for this repo, as it then will be assigned  # the constant value "[no description]" (which actually used to cause a  # segfault).  repo.url=bar -repo.path=$PWD/trash/repos/bar/.git +repo.path=$PWD/repos/bar/.git  repo.desc=the bar repo  repo.url=foo+bar -repo.path=$PWD/trash/repos/foo+bar/.git +repo.path=$PWD/repos/foo+bar/.git  repo.desc=the foo+bar repo  repo.url=with space -repo.path=$PWD/trash/repos/with space/.git +repo.path=$PWD/repos/with space/.git  repo.desc=spaced repo  EOF  } -prepare_tests() -{ -	setup_repos -	rm -f test-output.log 2>/dev/null -	test_count=0 -	test_failed=0 -	echo "[$0]" "$@" >test-output.log -	echo "$@" "($0)" -} - -tests_done() -{ -	printf "\n" -	if test $test_failed -gt 0 -	then -		printf "test: *** %s failure(s), logfile=%s\n" \ -			$test_failed "$(pwd)/test-output.log" -		false -	fi -} - -run_test() -{ -	bug=0 -	if test "$1" = "BUG" -	then -		bug=1 -		shift -	fi -	desc=$1 -	script=$2 -	test_count=$(expr $test_count + 1) -	printf "\ntest %d: name='%s'\n" $test_count "$desc" >>test-output.log -	printf "test %d: eval='%s'\n" $test_count "$2" >>test-output.log -	eval "$2" >>test-output.log 2>>test-output.log -	res=$? -	printf "test %d: exitcode=%d\n" $test_count $res >>test-output.log -	if test $res = 0 -a $bug = 0 -	then -		printf " %2d) %-60s [ok]\n" $test_count "$desc" -	elif test $res = 0 -a $bug = 1 -	then -		printf " %2d) %-60s [BUG FIXED]\n" $test_count "$desc" -	elif test $bug = 1 -	then -		printf " %2d) %-60s [KNOWN BUG]\n" $test_count "$desc" -	else -		test_failed=$(expr $test_failed + 1) -		printf " %2d) %-60s [failed]\n" $test_count "$desc" -	fi -} -  cgit_query()  { -	CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="$1" "$PWD/../cgit" +	CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="$1" cgit  }  cgit_url()  { -	CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit" +	CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="url=$1" cgit  } + +test -z "$CGIT_TEST_NO_CREATE_REPOS" && setup_repos | 
