ref: v0.9.0.2
tests/setup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# 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' unset CDPATH 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 } 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 virtual-root=/ cache-root=$PWD/trash/cache cache-size=1021 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 # 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 repo.url=with space repo.path=$PWD/trash/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_url() { CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit" } |