Website Summary Files Commits Branches @commit @diff @stats
path: root / tests / setup.sh
diff options
context:
space:
mode:
Commitc95cc5ec56dbb7394015eb18201403be6d80f69b (patch)
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
Files7014b96a1a1408b5291532c0c442082aba693a80 /tests/setup.sh
cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.tar
cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.tar.gz
cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.zip
Parent8a92df033e974af6338b530a0d78d1bdb0b0f918 (diff)
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>
1 files changed, 41 insertions, 89 deletions
-rwxr-xr-xtests/setup.sh130
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