Diffstat (limited to 'tests/setup.sh')
| -rwxr-xr-x | tests/setup.sh | 186 |
1 files changed, 57 insertions, 129 deletions
diff --git a/tests/setup.sh b/tests/setup.sh index 8db810f..51d5a75 100755 --- a/tests/setup.sh +++ b/tests/setup.sh @@ -15,166 +15,94 @@ # 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 - case "$3" in - testplus) - echo "hello" >a+b - git add a+b - git commit -m "add a+b" - git branch "1+2" - ;; - commit-graph) - git commit-graph write - ;; - esac - ) + dir=$PWD + test -d $name && return + printf "Creating testrepo %s\n" $name + mkdir -p $name + cd $name + git init + for ((n=1; n<=count; n++)) + do + echo $n >file-$n + git add file-$n + git commit -m "commit $n" + done + cd $dir } setup_repos() { - rm -rf cache - mkdir -p cache - mkrepo repos/foo 5 >/dev/null - mkrepo repos/bar 50 commit-graph >/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 + rm -rf trash/cache + mkdir -p trash/cache + mkrepo trash/repos/foo 5 >/dev/null + mkrepo trash/repos/bar 50 >/dev/null + cat >trash/cgitrc <<EOF virtual-root=/ -cache-root=$PWD/cache +cache-root=$PWD/trash/cache -cache-size=1021 -snapshots=tar.gz tar.bz tar.lz tar.xz tar.zst zip +nocache=0 +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.path=$PWD/trash/repos/foo/.git +repo.desc=the foo repo repo.url=bar -repo.path=$PWD/repos/bar/.git +repo.path=$PWD/trash/repos/bar/.git repo.desc=the bar repo +EOF +} -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 +prepare_tests() +{ + setup_repos + test_count=0 + test_failed=0 + echo "$@" "($0)" +} -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 +tests_done() +{ + printf "\n" + if test $test_failed -gt 0 + then + printf "[%s of %s tests failed]\n" $test_failed $test_count + false + fi +} - 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 +run_test() +{ + desc=$1 + script=$2 + ((test_count++)) + eval "$2" >test-output.log + res=$? + if test $res = 0 + then + printf " %s: ok - %s\n" $test_count "$desc" + else + ((test_failed++)) + printf " %s: fail - %s\n" $test_count "$desc" fi } cgit_query() { - CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="$1" cgit + CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="$1" "$PWD/../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 + CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit" } -test -z "$CGIT_TEST_NO_CREATE_REPOS" && setup_repos |