about summary refs log tree commit diff
path: root/tests/setup.sh
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2007-11-11 00:40:58 +0100
committerLars Hjemli <hjemli@gmail.com>2007-11-11 12:00:13 +0100
commitb4649fc90597910c89c3f37a6aec9af54d9f416b (patch)
treec4542a13f9509ebd92baf4f26548ddc72ac1f05f /tests/setup.sh
parentMerge branch 'stable' (diff)
downloadcgit-pink-b4649fc90597910c89c3f37a6aec9af54d9f416b.tar.gz
cgit-pink-b4649fc90597910c89c3f37a6aec9af54d9f416b.zip
Create initial testsuite
This creates a simple testsuite, heavily inspired by the testsuite in git.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to '')
-rwxr-xr-xtests/setup.sh108
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/setup.sh b/tests/setup.sh
new file mode 100755
index 0000000..51d5a75
--- /dev/null
+++ b/tests/setup.sh
@@ -0,0 +1,108 @@
+# This file should be sourced by all test-scripts
+#
+# Main functions:
+#   prepare_tests(description) - setup for testing, i.e. create repos+config
+#   run_test(description, script) - run one test, i.e. eval script
+#
+# Helper functions
+#   cgit_query(querystring) - call cgit with the specified querystring
+#   cgit_url(url) - call cgit with the specified virtual url
+#
+# Example script:
+#
+# . setup.sh
+# prepare_tests "html validation"
+# run_test 'repo index' 'cgit_url "/" | tidy -e'
+# run_test 'repo summary' 'cgit_url "/foo" | tidy -e'
+
+
+mkrepo() {
+	name=$1
+	count=$2
+	dir=$PWD
+	test -d $name && return
+	printf "Creating testrepo %s\n" $name
+	mkdir -p $name
+	cd $name
+	git init
+	for ((n=1; n<=count; n++))
+	do
+		echo $n >file-$n
+		git add file-$n
+		git commit -m "commit $n"
+	done
+	cd $dir
+}
+
+setup_repos()
+{
+	rm -rf trash/cache
+	mkdir -p trash/cache
+	mkrepo trash/repos/foo 5 >/dev/null
+	mkrepo trash/repos/bar 50 >/dev/null
+	cat >trash/cgitrc <<EOF
+virtual-root=/
+cache-root=$PWD/trash/cache
+
+nocache=0
+snapshots=tar.gz tar.bz zip
+enable-log-filecount=1
+enable-log-linecount=1
+summary-log=5
+summary-branches=5
+summary-tags=5
+
+repo.url=foo
+repo.path=$PWD/trash/repos/foo/.git
+repo.desc=the foo repo
+
+repo.url=bar
+repo.path=$PWD/trash/repos/bar/.git
+repo.desc=the bar repo
+EOF
+}
+
+prepare_tests()
+{
+	setup_repos
+	test_count=0
+	test_failed=0
+	echo "$@" "($0)"
+}
+
+tests_done()
+{
+	printf "\n"
+	if test $test_failed -gt 0
+	then
+		printf "[%s of %s tests failed]\n" $test_failed $test_count
+		false
+	fi
+}
+
+run_test()
+{
+	desc=$1
+	script=$2
+	((test_count++))
+	eval "$2" >test-output.log
+	res=$?
+	if test $res = 0
+	then
+		printf "  %s: ok - %s\n" $test_count "$desc"
+	else
+		((test_failed++))
+		printf "  %s: fail - %s\n" $test_count "$desc"
+	fi
+}
+
+cgit_query()
+{
+	CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="$1" "$PWD/../cgit"
+}
+
+cgit_url()
+{
+	CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit"
+}
+
f='/cgit-pink/commit/cgitrc.5.txt?id=86b753cbc076855f06a7d44490b2ba9f2b07d879&follow=1'>cgitrc.5.txt: document 'embedded' and 'noheader'Lars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25Add support for 'noheader' optionLars Hjemli This option can be used to disable the standard cgit page header, which might be useful in combination with the 'embedded' option. Suggested-by: Mark Constable <markc@renta.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25cgitrc.5.txt: document 'head-include'Lars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25ui-blob: return 'application/octet-stream' for binary blobsLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25ui-plain: Return 'application/octet-stream' for binary files.Remko Tronçon Signed-off-by: Remko Tronçon <git@el-tramo.be> Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-06-11use cgit_httpscheme() for atom feedDiego Ongaro 2009-06-11add cgit_httpscheme() -> http:// or https://Diego Ongaro 2009-06-07Return http statuscode 404 on unknown branchLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-06-07Add head-include configuration option.Mark Lodato This patch adds an option to the configuration file, "head-include", which works just like "header" or "footer", except the content is put into the HTML's <head> tag. 2009-03-15CGIT 0.8.2.1Lars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-03-15Fix doc-related glitches in Makefile and .gitignoreLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-03-15ui-snapshot: avoid segfault when no filename is specifiedLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-03-15fix segfault when displaying empty blobsEric Wong When size is zero, subtracting one from it turns it into ULONG_MAX which causes an out-of-bounds access on buf. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-02-19Add support for HEAD requestsLars Hjemli This is a quick 'n dirty hack which makes cgit honor HEAD requests. Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-02-19Add support for ETag in 'plain' viewLars Hjemli When downloading a blob identified by its path, the client might want to know if the blob has been modified since a previous download of the same path. To this end, an ETag containing the blob SHA1 seems to be ideal. Todo: add support for HEAD requests... Suggested-by: Owen Taylor <otaylor@redhat.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-02-12ui-tree: escape ascii-text properly in hexdump viewLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-02-12Makefile: add doc-related targetsLars Hjemli