Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 1 | # This file should be sourced by all test-scripts |
| 2 | # |
| 3 | # Main functions: |
| 4 | # prepare_tests(description) - setup for testing, i.e. create repos+config |
| 5 | # run_test(description, script) - run one test, i.e. eval script |
| 6 | # |
| 7 | # Helper functions |
| 8 | # cgit_query(querystring) - call cgit with the specified querystring |
| 9 | # cgit_url(url) - call cgit with the specified virtual url |
| 10 | # |
| 11 | # Example script: |
| 12 | # |
| 13 | # . setup.sh |
| 14 | # prepare_tests "html validation" |
| 15 | # run_test 'repo index' 'cgit_url "/" | tidy -e' |
| 16 | # run_test 'repo summary' 'cgit_url "/foo" | tidy -e' |
| 17 | |
John Keeping | 1b1974c | 2013-04-08 20:12:38 +0100 | [diff] [blame] | 18 | # We don't want to run Git commands through Valgrind, so we filter out the |
| 19 | # --valgrind option here and handle it ourselves. We copy the arguments |
| 20 | # assuming that none contain a newline, although other whitespace is |
| 21 | # preserved. |
| 22 | LF=' |
| 23 | ' |
| 24 | test_argv= |
| 25 | |
| 26 | while test $# != 0 |
| 27 | do |
| 28 | case "$1" in |
| 29 | --va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind) |
| 30 | cgit_valgrind=t |
| 31 | test_argv="$test_argv${LF}--verbose" |
| 32 | ;; |
| 33 | *) |
| 34 | test_argv="$test_argv$LF$1" |
| 35 | ;; |
| 36 | esac |
| 37 | shift |
| 38 | done |
| 39 | |
| 40 | OLDIFS=$IFS |
| 41 | IFS=$LF |
| 42 | set -- $test_argv |
| 43 | IFS=$OLDIFS |
| 44 | |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 45 | : ${TEST_DIRECTORY=$(pwd)/../git/t} |
John Keeping | 31f56fc | 2013-04-14 17:59:30 +0100 | [diff] [blame] | 46 | : ${TEST_OUTPUT_DIRECTORY=$(pwd)} |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 47 | TEST_NO_CREATE_REPO=YesPlease |
| 48 | . "$TEST_DIRECTORY"/test-lib.sh |
| 49 | |
| 50 | # Prepend the directory containing cgit to PATH. |
John Keeping | 1b1974c | 2013-04-08 20:12:38 +0100 | [diff] [blame] | 51 | if test -n "$cgit_valgrind" |
| 52 | then |
| 53 | GIT_VALGRIND="$TEST_DIRECTORY/valgrind" |
| 54 | CGIT_VALGRIND=$(cd ../valgrind && pwd) |
| 55 | PATH="$CGIT_VALGRIND/bin:$PATH" |
| 56 | export GIT_VALGRIND CGIT_VALGRIND |
| 57 | else |
| 58 | PATH="$(pwd)/../..:$PATH" |
| 59 | fi |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 60 | |
Lukas Fleischer | ce56d89 | 2014-01-14 12:01:06 +0100 | [diff] [blame] | 61 | FILTER_DIRECTORY=$(cd ../filters && pwd) |
| 62 | |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 63 | mkrepo() { |
| 64 | name=$1 |
| 65 | count=$2 |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 66 | test_create_repo "$name" |
| 67 | ( |
| 68 | cd "$name" |
| 69 | n=1 |
| 70 | while test $n -le $count |
| 71 | do |
| 72 | echo $n >file-$n |
| 73 | git add file-$n |
| 74 | git commit -m "commit $n" |
| 75 | n=$(expr $n + 1) |
| 76 | done |
| 77 | if test "$3" = "testplus" |
| 78 | then |
| 79 | echo "hello" >a+b |
| 80 | git add a+b |
| 81 | git commit -m "add a+b" |
| 82 | git branch "1+2" |
| 83 | fi |
| 84 | ) |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 85 | } |
| 86 | |
| 87 | setup_repos() |
| 88 | { |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 89 | rm -rf cache |
| 90 | mkdir -p cache |
| 91 | mkrepo repos/foo 5 >/dev/null |
| 92 | mkrepo repos/bar 50 >/dev/null |
| 93 | mkrepo repos/foo+bar 10 testplus >/dev/null |
| 94 | mkrepo "repos/with space" 2 >/dev/null |
Lukas Fleischer | ce56d89 | 2014-01-14 12:01:06 +0100 | [diff] [blame] | 95 | mkrepo repos/filter 5 testplus >/dev/null |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 96 | cat >cgitrc <<EOF |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 97 | virtual-root=/ |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 98 | cache-root=$PWD/cache |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 99 | |
Lars Hjemli | 939d32f | 2008-04-28 11:32:42 +0200 | [diff] [blame] | 100 | cache-size=1021 |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 101 | snapshots=tar.gz tar.bz zip |
| 102 | enable-log-filecount=1 |
| 103 | enable-log-linecount=1 |
| 104 | summary-log=5 |
| 105 | summary-branches=5 |
| 106 | summary-tags=5 |
Lars Hjemli | a1429db | 2011-06-06 20:49:13 +0000 | [diff] [blame] | 107 | clone-url=git://example.org/\$CGIT_REPO_URL.git |
Lukas Fleischer | ce56d89 | 2014-01-14 12:01:06 +0100 | [diff] [blame] | 108 | enable-filter-overrides=1 |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 109 | |
| 110 | repo.url=foo |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 111 | repo.path=$PWD/repos/foo/.git |
Lars Hjemli | 1913411 | 2008-02-24 15:27:33 +0100 | [diff] [blame] | 112 | # Do not specify a description for this repo, as it then will be assigned |
| 113 | # the constant value "[no description]" (which actually used to cause a |
| 114 | # segfault). |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 115 | |
| 116 | repo.url=bar |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 117 | repo.path=$PWD/repos/bar/.git |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 118 | repo.desc=the bar repo |
Lars Hjemli | b575115 | 2008-10-05 12:52:25 +0200 | [diff] [blame] | 119 | |
| 120 | repo.url=foo+bar |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 121 | repo.path=$PWD/repos/foo+bar/.git |
Lars Hjemli | b575115 | 2008-10-05 12:52:25 +0200 | [diff] [blame] | 122 | repo.desc=the foo+bar repo |
Lars Hjemli | 084ca50 | 2011-05-22 12:22:56 +0200 | [diff] [blame] | 123 | |
| 124 | repo.url=with space |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 125 | repo.path=$PWD/repos/with space/.git |
Lars Hjemli | 084ca50 | 2011-05-22 12:22:56 +0200 | [diff] [blame] | 126 | repo.desc=spaced repo |
Lukas Fleischer | ce56d89 | 2014-01-14 12:01:06 +0100 | [diff] [blame] | 127 | |
| 128 | repo.url=filter |
| 129 | repo.path=$PWD/repos/filter/.git |
| 130 | repo.desc=filtered repo |
| 131 | repo.about-filter=exec:$FILTER_DIRECTORY/capitalize-stdin.sh |
| 132 | repo.commit-filter=exec:$FILTER_DIRECTORY/capitalize-stdin.sh |
| 133 | repo.email-filter=exec:$FILTER_DIRECTORY/capitalize-argv1.sh |
| 134 | repo.source-filter=exec:$FILTER_DIRECTORY/capitalize-stdin.sh |
| 135 | repo.readme=master:a+b |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 136 | EOF |
| 137 | } |
| 138 | |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 139 | cgit_query() |
| 140 | { |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 141 | CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="$1" cgit |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 142 | } |
| 143 | |
| 144 | cgit_url() |
| 145 | { |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 146 | CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="url=$1" cgit |
Lars Hjemli | b4649fc | 2007-11-11 00:40:58 +0100 | [diff] [blame] | 147 | } |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 148 | |
John Keeping | 75bfec6 | 2013-05-18 18:46:38 +0100 | [diff] [blame] | 149 | strip_headers () { |
| 150 | while read -r line |
| 151 | do |
| 152 | test -z "$line" && break |
| 153 | done |
| 154 | cat |
| 155 | } |
| 156 | |
John Keeping | c95cc5e | 2013-04-01 15:09:05 +0100 | [diff] [blame] | 157 | test -z "$CGIT_TEST_NO_CREATE_REPOS" && setup_repos |