diff options
author | John Keeping <john@keeping.me.uk> | 2013-04-01 16:09:05 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2013-04-08 22:27:11 +0200 |
commit | c95cc5ec56dbb7394015eb18201403be6d80f69b (patch) | |
tree | 7014b96a1a1408b5291532c0c442082aba693a80 /tests/setup.sh | |
parent | 8a92df033e974af6338b530a0d78d1bdb0b0f918 (diff) | |
download | cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.tar.gz cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.tar.xz |
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 'tests/setup.sh')
-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 |