]> git.cameronkatri.com Git - cgit.git/blobdiff - tests/setup.sh
tests/setup.sh: allow testsuite to fail properly with POSIX standard shells
[cgit.git] / tests / setup.sh
index 51d5a7519af685cd8a9927dce86bde737f63db24..30f90d5c39663166ad51e3c41995e255041420ee 100755 (executable)
@@ -25,12 +25,21 @@ mkrepo() {
        mkdir -p $name
        cd $name
        git init
-       for ((n=1; n<=count; n++))
+       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
 }
 
@@ -40,11 +49,12 @@ setup_repos()
        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
        cat >trash/cgitrc <<EOF
 virtual-root=/
 cache-root=$PWD/trash/cache
 
-nocache=0
+cache-size=1021
 snapshots=tar.gz tar.bz zip
 enable-log-filecount=1
 enable-log-linecount=1
@@ -54,19 +64,27 @@ summary-tags=5
 
 repo.url=foo
 repo.path=$PWD/trash/repos/foo/.git
-repo.desc=the foo repo
+# 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.desc=the bar repo
+
+repo.url=foo+bar
+repo.path=$PWD/trash/repos/foo+bar/.git
+repo.desc=the foo+bar 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)"
 }
 
@@ -75,7 +93,8 @@ tests_done()
        printf "\n"
        if test $test_failed -gt 0
        then
-               printf "[%s of %s tests failed]\n" $test_failed $test_count
+               printf "test: *** %s failure(s), logfile=%s\n" \
+                       $test_failed "$(pwd)/test-output.log"
                false
        fi
 }
@@ -84,15 +103,18 @@ run_test()
 {
        desc=$1
        script=$2
-       ((test_count++))
-       eval "$2" >test-output.log
+       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
        then
-               printf "  %s: ok - %s\n" $test_count "$desc"
+               printf " %2d) %-60s [ok]\n" $test_count "$desc"
        else
-               ((test_failed++))
-               printf "  %s: fail - %s\n" $test_count "$desc"
+               test_failed=$(expr $test_failed + 1)
+               printf " %2d) %-60s [failed]\n" $test_count "$desc"
        fi
 }
 
@@ -105,4 +127,3 @@ cgit_url()
 {
        CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit"
 }
-