all repos — cgit @ 877ff681007f31c69777e9569c4de819d4af19c9

a hyperfast web frontend for git written in c

tests/setup.sh (view raw)

  1# This file should be sourced by all test-scripts
  2#
  3# Main functions:
  4#   prepare_tests(description) - setup for testing, i.e. create repos+config
  5#   run_test(description, script) - run one test, i.e. eval script
  6#
  7# Helper functions
  8#   cgit_query(querystring) - call cgit with the specified querystring
  9#   cgit_url(url) - call cgit with the specified virtual url
 10#
 11# Example script:
 12#
 13# . setup.sh
 14# prepare_tests "html validation"
 15# run_test 'repo index' 'cgit_url "/" | tidy -e'
 16# run_test 'repo summary' 'cgit_url "/foo" | tidy -e'
 17
 18unset CDPATH
 19
 20mkrepo() {
 21	name=$1
 22	count=$2
 23	dir=$PWD
 24	test -d "$name" && return
 25	printf "Creating testrepo %s\n" $name
 26	mkdir -p "$name"
 27	cd "$name"
 28	git init
 29	n=1
 30	while test $n -le $count
 31	do
 32		echo $n >file-$n
 33		git add file-$n
 34		git commit -m "commit $n"
 35		n=$(expr $n + 1)
 36	done
 37	if test "$3" = "testplus"
 38	then
 39		echo "hello" >a+b
 40		git add a+b
 41		git commit -m "add a+b"
 42		git branch "1+2"
 43	fi
 44	cd $dir
 45}
 46
 47setup_repos()
 48{
 49	rm -rf trash/cache
 50	mkdir -p trash/cache
 51	mkrepo trash/repos/foo 5 >/dev/null
 52	mkrepo trash/repos/bar 50 >/dev/null
 53	mkrepo trash/repos/foo+bar 10 testplus >/dev/null
 54	mkrepo "trash/repos/with space" 2 >/dev/null
 55	cat >trash/cgitrc <<EOF
 56virtual-root=/
 57cache-root=$PWD/trash/cache
 58
 59cache-size=1021
 60snapshots=tar.gz tar.bz zip
 61enable-log-filecount=1
 62enable-log-linecount=1
 63summary-log=5
 64summary-branches=5
 65summary-tags=5
 66
 67repo.url=foo
 68repo.path=$PWD/trash/repos/foo/.git
 69# Do not specify a description for this repo, as it then will be assigned
 70# the constant value "[no description]" (which actually used to cause a
 71# segfault).
 72
 73repo.url=bar
 74repo.path=$PWD/trash/repos/bar/.git
 75repo.desc=the bar repo
 76
 77repo.url=foo+bar
 78repo.path=$PWD/trash/repos/foo+bar/.git
 79repo.desc=the foo+bar repo
 80
 81repo.url=with space
 82repo.path=$PWD/trash/repos/with space/.git
 83repo.desc=spaced repo
 84EOF
 85}
 86
 87prepare_tests()
 88{
 89	setup_repos
 90	rm -f test-output.log 2>/dev/null
 91	test_count=0
 92	test_failed=0
 93	echo "[$0]" "$@" >test-output.log
 94	echo "$@" "($0)"
 95}
 96
 97tests_done()
 98{
 99	printf "\n"
100	if test $test_failed -gt 0
101	then
102		printf "test: *** %s failure(s), logfile=%s\n" \
103			$test_failed "$(pwd)/test-output.log"
104		false
105	fi
106}
107
108run_test()
109{
110	bug=0
111	if test "$1" = "BUG"
112	then
113		bug=1
114		shift
115	fi
116	desc=$1
117	script=$2
118	test_count=$(expr $test_count + 1)
119	printf "\ntest %d: name='%s'\n" $test_count "$desc" >>test-output.log
120	printf "test %d: eval='%s'\n" $test_count "$2" >>test-output.log
121	eval "$2" >>test-output.log 2>>test-output.log
122	res=$?
123	printf "test %d: exitcode=%d\n" $test_count $res >>test-output.log
124	if test $res = 0 -a $bug = 0
125	then
126		printf " %2d) %-60s [ok]\n" $test_count "$desc"
127	elif test $res = 0 -a $bug = 1
128	then
129		printf " %2d) %-60s [BUG FIXED]\n" $test_count "$desc"
130	elif test $bug = 1
131	then
132		printf " %2d) %-60s [KNOWN BUG]\n" $test_count "$desc"
133	else
134		test_failed=$(expr $test_failed + 1)
135		printf " %2d) %-60s [failed]\n" $test_count "$desc"
136	fi
137}
138
139cgit_query()
140{
141	CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="$1" "$PWD/../cgit"
142}
143
144cgit_url()
145{
146	CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit"
147}