ref: v0.10.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 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# 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' # We don't want to run Git commands through Valgrind, so we filter out the # --valgrind option here and handle it ourselves. We copy the arguments # assuming that none contain a newline, although other whitespace is # preserved. LF=' ' test_argv= while test $# != 0 do case "$1" in --va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind) cgit_valgrind=t test_argv="$test_argv${LF}--verbose" ;; *) test_argv="$test_argv$LF$1" ;; esac shift done OLDIFS=$IFS IFS=$LF set -- $test_argv IFS=$OLDIFS : ${TEST_DIRECTORY=$(pwd)/../git/t} : ${TEST_OUTPUT_DIRECTORY=$(pwd)} TEST_NO_CREATE_REPO=YesPlease . "$TEST_DIRECTORY"/test-lib.sh # Prepend the directory containing cgit to PATH. if test -n "$cgit_valgrind" then GIT_VALGRIND="$TEST_DIRECTORY/valgrind" CGIT_VALGRIND=$(cd ../valgrind && pwd) PATH="$CGIT_VALGRIND/bin:$PATH" export GIT_VALGRIND CGIT_VALGRIND else PATH="$(pwd)/../..:$PATH" fi FILTER_DIRECTORY=$(cd ../filters && pwd) if cgit --version | grep -F -q "[+] Lua scripting"; then export CGIT_HAS_LUA=1 else export CGIT_HAS_LUA=0 fi mkrepo() { name=$1 count=$2 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 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 mkrepo repos/filter 5 testplus >/dev/null cat >cgitrc <<EOF virtual-root=/ cache-root=$PWD/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 clone-url=git://example.org/\$CGIT_REPO_URL.git enable-filter-overrides=1 repo.url=foo 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/repos/bar/.git repo.desc=the bar repo repo.url=foo+bar repo.path=$PWD/repos/foo+bar/.git repo.desc=the foo+bar repo repo.url=with space repo.path=$PWD/repos/with space/.git repo.desc=spaced repo repo.url=filter-exec repo.path=$PWD/repos/filter/.git repo.desc=filtered repo repo.about-filter=exec:$FILTER_DIRECTORY/dump.sh repo.commit-filter=exec:$FILTER_DIRECTORY/dump.sh repo.email-filter=exec:$FILTER_DIRECTORY/dump.sh repo.source-filter=exec:$FILTER_DIRECTORY/dump.sh repo.readme=master:a+b EOF if [ $CGIT_HAS_LUA -eq 1 ]; then cat >>cgitrc <<EOF repo.url=filter-lua repo.path=$PWD/repos/filter/.git repo.desc=filtered repo repo.about-filter=lua:$FILTER_DIRECTORY/dump.lua repo.commit-filter=lua:$FILTER_DIRECTORY/dump.lua repo.email-filter=lua:$FILTER_DIRECTORY/dump.lua repo.source-filter=lua:$FILTER_DIRECTORY/dump.lua repo.readme=master:a+b EOF fi } cgit_query() { CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="$1" cgit } cgit_url() { CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="url=$1" cgit } strip_headers() { while read -r line do test -z "$line" && break done cat } test -z "$CGIT_TEST_NO_CREATE_REPOS" && setup_repos |