Diffstat (limited to 'tests')
| -rw-r--r-- | tests/.gitignore | 4 | ||||
| -rw-r--r-- | tests/Makefile | 6 | ||||
| -rw-r--r-- | tests/filters/dump.lua | 17 | ||||
| -rwxr-xr-x | tests/filters/dump.sh | 4 | ||||
| -rwxr-xr-x | tests/setup.sh | 186 | ||||
| -rwxr-xr-x | tests/t0001-validate-git-versions.sh | 45 | ||||
| -rwxr-xr-x | tests/t0010-validate-html.sh | 30 | ||||
| -rwxr-xr-x | tests/t0020-validate-cache.sh | 41 | ||||
| -rwxr-xr-x | tests/t0101-index.sh | 22 | ||||
| -rwxr-xr-x | tests/t0102-summary.sh | 33 | ||||
| -rwxr-xr-x | tests/t0103-log.sh | 25 | ||||
| -rwxr-xr-x | tests/t0104-tree.sh | 31 | ||||
| -rwxr-xr-x | tests/t0105-commit.sh | 41 | ||||
| -rwxr-xr-x | tests/t0106-diff.sh | 21 | ||||
| -rwxr-xr-x | tests/t0107-snapshot.sh | 207 | ||||
| -rwxr-xr-x | tests/t0108-patch.sh | 59 | ||||
| -rwxr-xr-x | tests/t0109-gitconfig.sh | 48 | ||||
| -rwxr-xr-x | tests/t0110-rawdiff.sh | 42 | ||||
| -rwxr-xr-x | tests/t0111-filter.sh | 46 | ||||
| -rwxr-xr-x | tests/valgrind/bin/cgit | 12 |
20 files changed, 201 insertions, 719 deletions
diff --git a/tests/.gitignore b/tests/.gitignore index 3fd2e96..c1c1c0b 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -1,2 +1,2 @@ -trash\ directory.t* -test-results +trash +test-output.log diff --git a/tests/Makefile b/tests/Makefile index 65e1117..8c6c236 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,15 +1,11 @@ -include ../git/config.mak.uname --include ../cgit.conf -SHELL_PATH ?= $(SHELL) -SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh) all: $(T) $(T): - @'$(SHELL_PATH_SQ)' $@ $(CGIT_TEST_OPTS) + @./$@ clean: $(RM) -rf trash diff --git a/tests/filters/dump.lua b/tests/filters/dump.lua deleted file mode 100644 index 1f15c93..0000000 --- a/tests/filters/dump.lua +++ /dev/null @@ -1,17 +0,0 @@ -function filter_open(...) - buffer = "" - for i = 1, select("#", ...) do - buffer = buffer .. select(i, ...) .. " " - end -end - -function filter_close() - html(buffer) - return 0 -end - -function filter_write(str) - buffer = buffer .. string.upper(str) -end - - diff --git a/tests/filters/dump.sh b/tests/filters/dump.sh deleted file mode 100755 index da6f7a1..0000000 --- a/tests/filters/dump.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -[ "$#" -gt 0 ] && printf "%s " "$*" -tr '[:lower:]' '[:upper:]' diff --git a/tests/setup.sh b/tests/setup.sh index 8db810f..e37306e 100755 --- a/tests/setup.sh +++ b/tests/setup.sh @@ -15,166 +15,102 @@ # 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 +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 +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/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 + rm -f test-output.log 2>/dev/null + test_count=0 + test_failed=0 + echo "[$0]" "$@" >test-output.log + 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 "test: *** %s failure(s), logfile=%s\n" \ + $test_failed "$(pwd)/test-output.log" + 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++)) + 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 " %2d) %-60s [ok]\n" $test_count "$desc" + else + ((test_failed++)) + printf " %2d) %-60s [failed]\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 diff --git a/tests/t0001-validate-git-versions.sh b/tests/t0001-validate-git-versions.sh deleted file mode 100755 index dd84fe3..0000000 --- a/tests/t0001-validate-git-versions.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -if [ "${CGIT_TEST_NO_GIT_VERSION}" = "YesPlease" ]; then - exit 0 -fi - -test_description='Check Git version is correct' -CGIT_TEST_NO_CREATE_REPOS=YesPlease -. ./setup.sh - -test_expect_success 'extract Git version from Makefile' ' - sed -n -e "/^GIT_VER[ ]*=/ { - s/^GIT_VER[ ]*=[ ]*// - p - }" ../../Makefile >makefile_version -' - -# Note that Git's GIT-VERSION-GEN script applies "s/-/./g" to the version -# string to produce the internal version in the GIT-VERSION-FILE, so we -# must apply the same transformation to the version in the Makefile before -# comparing them. -test_expect_success 'test Git version matches Makefile' ' - ( cat ../../git/GIT-VERSION-FILE || echo "No GIT-VERSION-FILE" ) | - sed -e "s/GIT_VERSION[ ]*=[ ]*//" -e "s/\\.dirty$//" >git_version && - sed -e "s/-/./g" makefile_version >makefile_git_version && - test_cmp git_version makefile_git_version -' - -test_expect_success 'test submodule version matches Makefile' ' - if ! test -e ../../git/.git - then - echo "git/ is not a Git repository" >&2 - else - ( - cd ../.. && - sm_oid=$(git ls-files --stage -- git | - sed -e "s/^[0-9]* \\([0-9a-f]*\\) [0-9] .*$/\\1/") && - cd git && - git describe --match "v[0-9]*" $sm_oid - ) | sed -e "s/^v//" -e "s/-/./" >sm_version && - test_cmp sm_version makefile_version - fi -' - -test_done diff --git a/tests/t0010-validate-html.sh b/tests/t0010-validate-html.sh index ca08d69..94aa52b 100755 --- a/tests/t0010-validate-html.sh +++ b/tests/t0010-validate-html.sh @@ -1,6 +1,5 @@ #!/bin/sh -test_description='Validate html with tidy' . ./setup.sh @@ -8,9 +7,9 @@ test_url() { tidy_opt="-eq" test -z "$NO_TIDY_WARNINGS" || tidy_opt+=" --show-warnings no" - cgit_url "$1" >tidy-$test_count.tmp || return - sed -e "1,4d" tidy-$test_count.tmp >tidy-$test_count || return - "$tidy" $tidy_opt tidy-$test_count + cgit_url "$1" >trash/tidy-$test_count || return + sed -ie "1,4d" trash/tidy-$test_count || return + tidy $tidy_opt trash/tidy-$test_count rc=$? # tidy returns with exitcode 1 on warnings, 2 on error @@ -22,19 +21,14 @@ test_url() fi } -tidy=`which tidy 2>/dev/null` -test -n "$tidy" || { - skip_all='Skipping html validation tests: tidy not found' - test_done - exit -} +prepare_tests 'Validate html with tidy' -test_expect_success 'index page' 'test_url ""' -test_expect_success 'foo' 'test_url "foo"' -test_expect_success 'foo/log' 'test_url "foo/log"' -test_expect_success 'foo/tree' 'test_url "foo/tree"' -test_expect_success 'foo/tree/file-1' 'test_url "foo/tree/file-1"' -test_expect_success 'foo/commit' 'test_url "foo/commit"' -test_expect_success 'foo/diff' 'test_url "foo/diff"' +run_test 'index page' 'test_url ""' +run_test 'foo' 'test_url "foo"' +run_test 'foo/log' 'test_url "foo/log"' +run_test 'foo/tree' 'test_url "foo/tree"' +run_test 'foo/tree/file-1' 'test_url "foo/tree/file-1"' +run_test 'foo/commit' 'test_url "foo/commit"' +run_test 'foo/diff' 'test_url "foo/diff"' -test_done +tests_done diff --git a/tests/t0020-validate-cache.sh b/tests/t0020-validate-cache.sh index 657765d..53ec2eb 100755 --- a/tests/t0020-validate-cache.sh +++ b/tests/t0020-validate-cache.sh @@ -1,13 +1,13 @@ #!/bin/sh -test_description='Validate cache' . ./setup.sh -test_expect_success 'verify cache-size=0' ' +prepare_tests 'Validate cache' - rm -f cache/* && - sed -e "s/cache-size=1021$/cache-size=0/" cgitrc >cgitrc.tmp && - mv -f cgitrc.tmp cgitrc && +run_test 'verify cache-size=0' ' + + rm -f trash/cache/* && + sed -i -e "s/cache-size=1021$/cache-size=0/" trash/cgitrc && cgit_url "" && cgit_url "foo" && cgit_url "foo/refs" && @@ -21,15 +21,13 @@ test_expect_success 'verify cache-size=0' ' cgit_url "bar/log" && cgit_url "bar/diff" && cgit_url "bar/patch" && - ls cache >output && - test_line_count = 0 output + test 0 -eq $(ls trash/cache | wc -l) ' -test_expect_success 'verify cache-size=1' ' +run_test 'verify cache-size=1' ' - rm -f cache/* && - sed -e "s/cache-size=0$/cache-size=1/" cgitrc >cgitrc.tmp && - mv -f cgitrc.tmp cgitrc && + rm -f trash/cache/* && + sed -i -e "s/cache-size=0$/cache-size=1/" trash/cgitrc && cgit_url "" && cgit_url "foo" && cgit_url "foo/refs" && @@ -43,15 +41,13 @@ test_expect_success 'verify cache-size=1' ' cgit_url "bar/log" && cgit_url "bar/diff" && cgit_url "bar/patch" && - ls cache >output && - test_line_count = 1 output + test 1 -eq $(ls trash/cache | wc -l) ' -test_expect_success 'verify cache-size=1021' ' +run_test 'verify cache-size=1021' ' - rm -f cache/* && - sed -e "s/cache-size=1$/cache-size=1021/" cgitrc >cgitrc.tmp && - mv -f cgitrc.tmp cgitrc && + rm -f trash/cache/* && + sed -i -e "s/cache-size=1$/cache-size=1021/" trash/cgitrc && cgit_url "" && cgit_url "foo" && cgit_url "foo/refs" && @@ -65,14 +61,7 @@ test_expect_success 'verify cache-size=1021' ' cgit_url "bar/log" && cgit_url "bar/diff" && cgit_url "bar/patch" && - ls cache >output && - test_line_count = 13 output && - cgit_url "foo/ls_cache" >output.full && - strip_headers <output.full >output && - test_line_count = 13 output && - # Check that ls_cache output is cached correctly - cgit_url "foo/ls_cache" >output.second && - test_cmp output.full output.second + test 13 -eq $(ls trash/cache | wc -l) ' -test_done +tests_done diff --git a/tests/t0101-index.sh b/tests/t0101-index.sh index 82ef9b0..445af6a 100755 --- a/tests/t0101-index.sh +++ b/tests/t0101-index.sh @@ -1,17 +1,15 @@ #!/bin/sh -test_description='Check content on index page' . ./setup.sh -test_expect_success 'generate index page' 'cgit_url "" >tmp' -test_expect_success 'find foo repo' 'grep "foo" tmp' -test_expect_success 'find foo description' 'grep "\[no description\]" tmp' -test_expect_success 'find bar repo' 'grep "bar" tmp' -test_expect_success 'find bar description' 'grep "the bar repo" tmp' -test_expect_success 'find foo+bar repo' 'grep ">foo+bar<" tmp' -test_expect_success 'verify foo+bar link' 'grep "/foo+bar/" tmp' -test_expect_success 'verify "with%20space" link' 'grep "/with%20space/" tmp' -test_expect_success 'no tree-link' '! grep "foo/tree" tmp' -test_expect_success 'no log-link' '! grep "foo/log" tmp' +prepare_tests "Check content on index page" -test_done +run_test 'generate index page' 'cgit_url "" >trash/tmp' +run_test 'find foo repo' 'grep -e "foo" trash/tmp' +run_test 'find foo description' 'grep -e "\[no description\]" trash/tmp' +run_test 'find bar repo' 'grep -e "bar" trash/tmp' +run_test 'find bar description' 'grep -e "the bar repo" trash/tmp' +run_test 'no tree-link' '! grep -e "foo/tree" trash/tmp' +run_test 'no log-link' '! grep -e "foo/log" trash/tmp' + +tests_done diff --git a/tests/t0102-summary.sh b/tests/t0102-summary.sh index b8864cb..f0b0d9a 100755 --- a/tests/t0102-summary.sh +++ b/tests/t0102-summary.sh @@ -1,25 +1,20 @@ #!/bin/sh -test_description='Check content on summary page' . ./setup.sh -test_expect_success 'generate foo summary' 'cgit_url "foo" >tmp' -test_expect_success 'find commit 1' 'grep "commit 1" tmp' -test_expect_success 'find commit 5' 'grep "commit 5" tmp' -test_expect_success 'find branch master' 'grep "master" tmp' -test_expect_success 'no tags' '! grep "tags" tmp' -test_expect_success 'clone-url expanded correctly' ' - grep "git://example.org/foo.git" tmp -' +prepare_tests "Check content on summary page" -test_expect_success 'generate bar summary' 'cgit_url "bar" >tmp' -test_expect_success 'no commit 45' '! grep "commit 45" tmp' -test_expect_success 'find commit 46' 'grep "commit 46" tmp' -test_expect_success 'find commit 50' 'grep "commit 50" tmp' -test_expect_success 'find branch master' 'grep "master" tmp' -test_expect_success 'no tags' '! grep "tags" tmp' -test_expect_success 'clone-url expanded correctly' ' - grep "git://example.org/bar.git" tmp -' +run_test 'generate foo summary' 'cgit_url "foo" >trash/tmp' +run_test 'find commit 1' 'grep -e "commit 1" trash/tmp' +run_test 'find commit 5' 'grep -e "commit 5" trash/tmp' +run_test 'find branch master' 'grep -e "master" trash/tmp' +run_test 'no tags' '! grep -e "tags" trash/tmp' -test_done +run_test 'generate bar summary' 'cgit_url "bar" >trash/tmp' +run_test 'no commit 45' '! grep -e "commit 45" trash/tmp' +run_test 'find commit 46' 'grep -e "commit 46" trash/tmp' +run_test 'find commit 50' 'grep -e "commit 50" trash/tmp' +run_test 'find branch master' 'grep -e "master" trash/tmp' +run_test 'no tags' '! grep -e "tags" trash/tmp' + +tests_done diff --git a/tests/t0103-log.sh b/tests/t0103-log.sh index bdf1435..b08cd29 100755 --- a/tests/t0103-log.sh +++ b/tests/t0103-log.sh @@ -1,24 +1,15 @@ #!/bin/sh -test_description='Check content on log page' . ./setup.sh -test_expect_success 'generate foo/log' 'cgit_url "foo/log" >tmp' -test_expect_success 'find commit 1' 'grep "commit 1" tmp' -test_expect_success 'find commit 5' 'grep "commit 5" tmp' +prepare_tests "Check content on log page" -test_expect_success 'generate bar/log' 'cgit_url "bar/log" >tmp' -test_expect_success 'find commit 1' 'grep "commit 1" tmp' -test_expect_success 'find commit 50' 'grep "commit 50" tmp' +run_test 'generate foo/log' 'cgit_url "foo/log" >trash/tmp' +run_test 'find commit 1' 'grep -e "commit 1" trash/tmp' +run_test 'find commit 5' 'grep -e "commit 5" trash/tmp' -test_expect_success 'generate "with%20space/log?qt=grep&q=commit+1"' ' - cgit_url "with+space/log&qt=grep&q=commit+1" >tmp -' -test_expect_success 'find commit 1' 'grep "commit 1" tmp' -test_expect_success 'find link with %20 in path' 'grep "/with%20space/log/?qt=grep" tmp' -test_expect_success 'find link with + in arg' 'grep "/log/?qt=grep&q=commit+1" tmp' -test_expect_success 'no links with space in path' '! grep "href=./with space/" tmp' -test_expect_success 'no links with space in arg' '! grep "q=commit 1" tmp' -test_expect_success 'commit 2 is not visible' '! grep "commit 2" tmp' +run_test 'generate bar/log' 'cgit_url "bar/log" >trash/tmp' +run_test 'find commit 1' 'grep -e "commit 1" trash/tmp' +run_test 'find commit 50' 'grep -e "commit 50" trash/tmp' -test_done +tests_done diff --git a/tests/t0104-tree.sh b/tests/t0104-tree.sh index 2e140f5..2516c72 100755 --- a/tests/t0104-tree.sh +++ b/tests/t0104-tree.sh @@ -1,32 +1,21 @@ #!/bin/sh -test_description='Check content on tree page' . ./setup.sh -test_expect_success 'generate bar/tree' 'cgit_url "bar/tree" >tmp' -test_expect_success 'find file-1' 'grep "file-1" tmp' -test_expect_success 'find file-50' 'grep "file-50" tmp' +prepare_tests "Check content on tree page" -test_expect_success 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >tmp' +run_test 'generate bar/tree' 'cgit_url "bar/tree" >trash/tmp' +run_test 'find file-1' 'grep -e "file-1" trash/tmp' +run_test 'find file-50' 'grep -e "file-50" trash/tmp' -test_expect_success 'find line 1' ' - grep "<a id=.n1. href=.#n1.>1</a>" tmp -' +run_test 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >trash/tmp' -test_expect_success 'no line 2' ' - ! grep "<a id=.n2. href=.#n2.>2</a>" tmp +run_test 'find line 1' ' + grep -e "<a id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp ' -test_expect_success 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >tmp' - -test_expect_success 'verify a+b link' ' - grep "/foo+bar/tree/a+b" tmp -' - -test_expect_success 'generate foo+bar/tree?h=1+2' 'cgit_url "foo%2bbar/tree&h=1%2b2" >tmp' - -test_expect_success 'verify a+b?h=1+2 link' ' - grep "/foo+bar/tree/a+b?h=1%2b2" tmp +run_test 'no line 2' ' + grep -e "<a id=.n2. name=.n2. href=.#n2.>2</a>" trash/tmp ' -test_done +tests_done diff --git a/tests/t0105-commit.sh b/tests/t0105-commit.sh index 1a12ee3..a864612 100755 --- a/tests/t0105-commit.sh +++ b/tests/t0105-commit.sh @@ -1,36 +1,37 @@ #!/bin/sh -test_description='Check content on commit page' . ./setup.sh -test_expect_success 'generate foo/commit' 'cgit_url "foo/commit" >tmp' -test_expect_success 'find tree link' 'grep "<a href=./foo/tree/.>" tmp' -test_expect_success 'find parent link' 'grep -E "<a href=./foo/commit/\?id=.+>" tmp' +prepare_tests "Check content on commit page" -test_expect_success 'find commit subject' ' - grep "<div class=.commit-subject.>commit 5<" tmp +run_test 'generate foo/commit' 'cgit_url "foo/commit" >trash/tmp' +run_test 'find tree link' 'grep -e "<a href=./foo/tree/.>" trash/tmp' +run_test 'find parent link' 'grep -E "<a href=./foo/commit/\?id=.+>" trash/tmp' + +run_test 'find commit subject' ' + grep -e "<div class=.commit-subject.>commit 5</div>" trash/tmp ' -test_expect_success 'find commit msg' 'grep "<div class=.commit-msg.></div>" tmp' -test_expect_success 'find diffstat' 'grep "<table summary=.diffstat. class=.diffstat.>" tmp' +run_test 'find commit msg' 'grep -e "<div class=.commit-msg.></div>" trash/tmp' +run_test 'find diffstat' 'grep -e "<table summary=.diffstat. class=.diffstat.>" trash/tmp' -test_expect_success 'find diff summary' ' - grep "1 files changed, 1 insertions, 0 deletions" tmp +run_test 'find diff summary' ' + grep -e "1 files changed, 1 insertions, 0 deletions" trash/tmp ' -test_expect_success 'get root commit' ' - root=$(cd repos/foo && git rev-list --reverse HEAD | head -1) && - cgit_url "foo/commit&id=$root" >tmp && - grep "</html>" tmp +run_test 'get root commit' ' + root=$(cd trash/repos/foo && git rev-list --reverse HEAD | head -1) && + cgit_url "foo/commit&id=$root" >trash/tmp && + grep "</html>" trash/tmp ' -test_expect_success 'root commit contains diffstat' ' - grep "<a href=./foo/diff/file-1.id=[0-9a-f]\{40,64\}.>file-1</a>" tmp +run_test 'root commit contains diffstat' ' + grep "<a href=./foo/diff/file-1.id=[0-9a-f]\{40\}.>file-1</a>" trash/tmp ' -test_expect_success 'root commit contains diff' ' - grep ">diff --git a/file-1 b/file-1<" tmp && - grep "<div class=.add.>+1</div>" tmp +run_test 'root commit contains diff' ' + grep ">diff --git a/file-1 b/file-1<" trash/tmp && + grep -e "<div class=.add.>+1</div>" trash/tmp ' -test_done +tests_done diff --git a/tests/t0106-diff.sh b/tests/t0106-diff.sh index 82b645e..e140bcc 100755 --- a/tests/t0106-diff.sh +++ b/tests/t0106-diff.sh @@ -1,19 +1,20 @@ #!/bin/sh -test_description='Check content on diff page' . ./setup.sh -test_expect_success 'generate foo/diff' 'cgit_url "foo/diff" >tmp' -test_expect_success 'find diff header' 'grep "a/file-5 b/file-5" tmp' -test_expect_success 'find blob link' 'grep "<a href=./foo/tree/file-5?id=" tmp' -test_expect_success 'find added file' 'grep "new file mode 100644" tmp' +prepare_tests "Check content on diff page" -test_expect_success 'find hunk header' ' - grep "<div class=.hunk.>@@ -0,0 +1 @@</div>" tmp +run_test 'generate foo/diff' 'cgit_url "foo/diff" >trash/tmp' +run_test 'find diff header' 'grep -e "a/file-5 b/file-5" trash/tmp' +run_test 'find blob link' 'grep -e "<a href=./foo/tree/file-5?id=" trash/tmp' +run_test 'find added file' 'grep -e "new file mode 100644" trash/tmp' + +run_test 'find hunk header' ' + grep -e "<div class=.hunk.>@@ -0,0 +1 @@</div>" trash/tmp ' -test_expect_success 'find added line' ' - grep "<div class=.add.>+5</div>" tmp +run_test 'find added line' ' + grep -e "<div class=.add.>+5</div>" trash/tmp ' -test_done +tests_done diff --git a/tests/t0107-snapshot.sh b/tests/t0107-snapshot.sh index 0811ec4..8e90e10 100755 --- a/tests/t0107-snapshot.sh +++ b/tests/t0107-snapshot.sh @@ -1,205 +1,36 @@ #!/bin/sh -test_description='Verify snapshot' . ./setup.sh -test_expect_success 'get foo/snapshot/master.tar.gz' ' - cgit_url "foo/snapshot/master.tar.gz" >tmp -' - -test_expect_success 'check html headers' ' - head -n 1 tmp | - grep "Content-Type: application/x-gzip" && - - head -n 2 tmp | - grep "Content-Disposition: inline; filename=.master.tar.gz." -' - -test_expect_success 'strip off the header lines' ' - strip_headers <tmp >master.tar.gz -' - -test_expect_success 'verify gzip format' ' - gunzip --test master.tar.gz -' - -test_expect_success 'untar' ' - rm -rf master && - gzip -dc master.tar.gz | tar -xf - -' - -test_expect_success 'count files' ' - ls master/ >output && - test_line_count = 5 output -' - -test_expect_success 'verify untarred file-5' ' - grep "^5$" master/file-5 && - test_line_count = 1 master/file-5 -' - -if test -n "$(which lzip 2>/dev/null)"; then - test_set_prereq LZIP -else - say 'Skipping LZIP validation tests: lzip not found' -fi - -test_expect_success LZIP 'get foo/snapshot/master.tar.lz' ' - cgit_url "foo/snapshot/master.tar.lz" >tmp -' - -test_expect_success LZIP 'check html headers' ' - head -n 1 tmp | - grep "Content-Type: application/x-lzip" && - - head -n 2 tmp | - grep "Content-Disposition: inline; filename=.master.tar.lz." -' - -test_expect_success LZIP 'strip off the header lines' ' - strip_headers <tmp >master.tar.lz -' - -test_expect_success LZIP 'verify lzip format' ' - lzip --test master.tar.lz -' - -test_expect_success LZIP 'untar' ' - rm -rf master && - lzip -dc master.tar.lz | tar -xf - -' - -test_expect_success LZIP 'count files' ' - ls master/ >output && - test_line_count = 5 output -' - -test_expect_success LZIP 'verify untarred file-5' ' - grep "^5$" master/file-5 && - test_line_count = 1 master/file-5 -' - -if test -n "$(which xz 2>/dev/null)"; then - test_set_prereq XZ -else - say 'Skipping XZ validation tests: xz not found' -fi - -test_expect_success XZ 'get foo/snapshot/master.tar.xz' ' - cgit_url "foo/snapshot/master.tar.xz" >tmp -' +prepare_tests "Verify snapshot" -test_expect_success XZ 'check html headers' ' - head -n 1 tmp | - grep "Content-Type: application/x-xz" && - - head -n 2 tmp | - grep "Content-Disposition: inline; filename=.master.tar.xz." +run_test 'get foo/snapshot/test.tar.gz' ' + cgit_url "foo/snapshot/test.tar.gz" >trash/tmp ' -test_expect_success XZ 'strip off the header lines' ' - strip_headers <tmp >master.tar.xz -' +run_test 'check html headers' ' + head -n 1 trash/tmp | + grep -e "Content-Type: application/x-tar" && -test_expect_success XZ 'verify xz format' ' - xz --test master.tar.xz + head -n 2 trash/tmp | + grep -e "Content-Disposition: inline; filename=.test.tar.gz." ' -test_expect_success XZ 'untar' ' - rm -rf master && - xz -dc master.tar.xz | tar -xf - -' - -test_expect_success XZ 'count files' ' - ls master/ >output && - test_line_count = 5 output -' - -test_expect_success XZ 'verify untarred file-5' ' - grep "^5$" master/file-5 && - test_line_count = 1 master/file-5 -' - -if test -n "$(which zstd 2>/dev/null)"; then - test_set_prereq ZSTD -else - say 'Skipping ZSTD validation tests: zstd not found' -fi - -test_expect_success ZSTD 'get foo/snapshot/master.tar.zst' ' - cgit_url "foo/snapshot/master.tar.zst" >tmp +run_test 'strip off the header lines' ' + tail -n +6 trash/tmp > trash/test.tar.gz ' -test_expect_success ZSTD 'check html headers' ' - head -n 1 tmp | - grep "Content-Type: application/x-zstd" && - - head -n 2 tmp | - grep "Content-Disposition: inline; filename=.master.tar.zst." -' - -test_expect_success ZSTD 'strip off the header lines' ' - strip_headers <tmp >master.tar.zst -' - -test_expect_success ZSTD 'verify zstd format' ' - zstd --test master.tar.zst -' - -test_expect_success ZSTD 'untar' ' - rm -rf master && - zstd -dc master.tar.zst | tar -xf - -' - -test_expect_success ZSTD 'count files' ' - ls master/ >output && - test_line_count = 5 output -' - -test_expect_success ZSTD 'verify untarred file-5' ' - grep "^5$" master/file-5 && - test_line_count = 1 master/file-5 -' - -test_expect_success 'get foo/snapshot/master.zip' ' - cgit_url "foo/snapshot/master.zip" >tmp -' - -test_expect_success 'check HTML headers (zip)' ' - head -n 1 tmp | - grep "Content-Type: application/x-zip" && - - head -n 2 tmp | - grep "Content-Disposition: inline; filename=.master.zip." -' - -test_expect_success 'strip off the header lines (zip)' ' - strip_headers <tmp >master.zip -' - -if test -n "$(which unzip 2>/dev/null)"; then - test_set_prereq UNZIP -else - say 'Skipping ZIP validation tests: unzip not found' -fi - -test_expect_success UNZIP 'verify zip format' ' - unzip -t master.zip -' - -test_expect_success UNZIP 'unzip' ' - rm -rf master && - unzip master.zip -' +run_test 'verify gzip format' 'gunzip --test trash/test.tar.gz' +run_test 'untar' 'tar -xf trash/test.tar.gz -C trash' -test_expect_success UNZIP 'count files (zip)' ' - ls master/ >output && - test_line_count = 5 output +run_test 'count files' ' + c=$(ls -1 trash/foo/ | wc -l) && + test $c = 5 ' -test_expect_success UNZIP 'verify unzipped file-5' ' - grep "^5$" master/file-5 && - test_line_count = 1 master/file-5 +run_test 'verify untarred file-5' ' + grep -e "^5$" trash/foo/file-5 && + test $(cat trash/foo/file-5 | wc -l) = 1 ' -test_done +tests_done diff --git a/tests/t0108-patch.sh b/tests/t0108-patch.sh index 013d680..33351d6 100755 --- a/tests/t0108-patch.sh +++ b/tests/t0108-patch.sh @@ -1,62 +1,37 @@ #!/bin/sh -test_description='Check content on patch page' . ./setup.sh -test_expect_success 'generate foo/patch' ' - cgit_query "url=foo/patch" >tmp -' - -test_expect_success 'find `From:` line' ' - grep "^From: " tmp -' - -test_expect_success 'find `Date:` line' ' - grep "^Date: " tmp -' - -test_expect_success 'find `Subject:` line' ' - grep "^Subject: commit 5" tmp -' +prepare_tests "Check content on patch page" -test_expect_success 'find `cgit` signature' ' - tail -2 tmp | head -1 | grep "^cgit" +run_test 'generate foo/patch' ' + cgit_query "url=foo/patch" >trash/tmp ' -test_expect_success 'compare with output of git-format-patch(1)' ' - CGIT_VERSION=$(sed -n "s/CGIT_VERSION = //p" ../../VERSION) && - git --git-dir="$PWD/repos/foo/.git" format-patch --subject-prefix="" --signature="cgit $CGIT_VERSION" --stdout HEAD^ >tmp2 && - strip_headers <tmp >tmp_ && - test_cmp tmp_ tmp2 +run_test 'find `From:` line' ' + grep -e "^From: " trash/tmp ' -test_expect_success 'find initial commit' ' - root=$(git --git-dir="$PWD/repos/foo/.git" rev-list --max-parents=0 HEAD) +run_test 'find `Date:` line' ' + grep -e "^Date: " trash/tmp ' -test_expect_success 'generate patch for initial commit' ' - cgit_query "url=foo/patch&id=$root" >tmp +run_test 'find `Subject:` line' ' + grep -e "^Subject: commit 5" trash/tmp ' -test_expect_success 'find `cgit` signature' ' - tail -2 tmp | head -1 | grep "^cgit" +run_test 'find `cgit` signature' ' + tail -1 trash/tmp | grep -e "^cgit" ' -test_expect_success 'generate patches for multiple commits' ' - id=$(git --git-dir="$PWD/repos/foo/.git" rev-parse HEAD) && - id2=$(git --git-dir="$PWD/repos/foo/.git" rev-parse HEAD~3) && - cgit_query "url=foo/patch&id=$id&id2=$id2" >tmp +run_test 'find initial commit' ' + root=$(git --git-dir=$PWD/trash/repos/foo/.git rev-list HEAD | tail -1) ' -test_expect_success 'find `cgit` signature' ' - tail -2 tmp | head -1 | grep "^cgit" +run_test 'generate patch for initial commit' ' + cgit_query "url=foo/patch&id=$root" >trash/tmp ' -test_expect_success 'compare with output of git-format-patch(1)' ' - CGIT_VERSION=$(sed -n "s/CGIT_VERSION = //p" ../../VERSION) && - git --git-dir="$PWD/repos/foo/.git" format-patch -N --subject-prefix="" --signature="cgit $CGIT_VERSION" --stdout HEAD~3..HEAD >tmp2 && - strip_headers <tmp >tmp_ && - test_cmp tmp_ tmp2 +run_test 'find `cgit` signature' ' + tail -1 trash/tmp | grep -e "^cgit" ' - -test_done diff --git a/tests/t0109-gitconfig.sh b/tests/t0109-gitconfig.sh deleted file mode 100755 index 189ef28..0000000 --- a/tests/t0109-gitconfig.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh - -test_description='Ensure that git does not access $HOME' -. ./setup.sh - -test -n "$(which strace 2>/dev/null)" || { - skip_all='Skipping access validation tests: strace not found' - test_done - exit -} - -strace true 2>/dev/null || { - skip_all='Skipping access validation tests: strace not functional' - test_done - exit -} - -test_no_home_access () { - non_existent_path="/path/to/some/place/that/does/not/possibly/exist" - while test -d "$non_existent_path"; do - non_existent_path="$non_existent_path/$(date +%N)" - done && - strace \ - -E HOME="$non_existent_path" \ - -E CGIT_CONFIG="$PWD/cgitrc" \ - -E QUERY_STRING="url=$1" \ - -e access -f -o strace.out cgit && - ! grep "$non_existent_path" strace.out -} - -test_no_home_access_success() { - test_expect_success "do not access \$HOME: $1" " - test_no_home_access '$1' - " -} - -test_no_home_access_success -test_no_home_access_success foo -test_no_home_access_success foo/refs -test_no_home_access_success foo/log -test_no_home_access_success foo/tree -test_no_home_access_success foo/tree/file-1 -test_no_home_access_success foo/commit -test_no_home_access_success foo/diff -test_no_home_access_success foo/patch -test_no_home_access_success foo/snapshot/master.tar.gz - -test_done diff --git a/tests/t0110-rawdiff.sh b/tests/t0110-rawdiff.sh deleted file mode 100755 index 66fa7d5..0000000 --- a/tests/t0110-rawdiff.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -test_description='Check content on rawdiff page' -. ./setup.sh - -test_expect_success 'generate foo/rawdiff' ' - cgit_query "url=foo/rawdiff" >tmp -' - -test_expect_success 'compare with output of git-diff(1)' ' - git --git-dir="$PWD/repos/foo/.git" diff HEAD^.. >tmp2 && - sed "1,4d" tmp >tmp_ && - cmp tmp_ tmp2 -' - -test_expect_success 'find initial commit' ' - root=$(git --git-dir="$PWD/repos/foo/.git" rev-list --max-parents=0 HEAD) -' - -test_expect_success 'generate diff for initial commit' ' - cgit_query "url=foo/rawdiff&id=$root" >tmp -' - -test_expect_success 'compare with output of git-diff-tree(1)' ' - git --git-dir="$PWD/repos/foo/.git" diff-tree -p --no-commit-id --root "$root" >tmp2 && - sed "1,4d" tmp >tmp_ && - cmp tmp_ tmp2 -' - -test_expect_success 'generate diff for multiple commits' ' - id=$(git --git-dir="$PWD/repos/foo/.git" rev-parse HEAD) && - id2=$(git --git-dir="$PWD/repos/foo/.git" rev-parse HEAD~3) && - cgit_query "url=foo/rawdiff&id=$id&id2=$id2" >tmp -' - -test_expect_success 'compare with output of git-diff(1)' ' - git --git-dir="$PWD/repos/foo/.git" diff HEAD~3..HEAD >tmp2 && - sed "1,4d" tmp >tmp_ && - cmp tmp_ tmp2 -' - -test_done diff --git a/tests/t0111-filter.sh b/tests/t0111-filter.sh deleted file mode 100755 index 2fdc366..0000000 --- a/tests/t0111-filter.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh - -test_description='Check filtered content' -. ./setup.sh - -prefixes="exec" -if [ $CGIT_HAS_LUA -eq 1 ]; then - prefixes="$prefixes lua" -fi - -for prefix in $prefixes -do - test_expect_success "generate filter-$prefix/tree/a%2bb" " - cgit_url 'filter-$prefix/tree/a%2bb' >tmp - " - - test_expect_success "check whether the $prefix source filter works" ' - grep "<code>a+b HELLO$" tmp - ' - - test_expect_success "generate filter-$prefix/about/" " - cgit_url 'filter-$prefix/about/' >tmp - " - - test_expect_success "check whether the $prefix about filter works" ' - grep "<div id='"'"'summary'"'"'>a+b HELLO$" tmp - ' - - test_expect_success "generate filter-$prefix/commit/" " - cgit_url 'filter-$prefix/commit/' >tmp - " - - test_expect_success "check whether the $prefix commit filter works" ' - grep "<div class='"'"'commit-subject'"'"'>ADD A+B" tmp - ' - - test_expect_success "check whether the $prefix email filter works for authors" ' - grep "<author@example.com> commit A U THOR <AUTHOR@EXAMPLE.COM>" tmp - ' - - test_expect_success "check whether the $prefix email filter works for committers" ' - grep "<committer@example.com> commit C O MITTER <COMMITTER@EXAMPLE.COM>" tmp - ' -done - -test_done diff --git a/tests/valgrind/bin/cgit b/tests/valgrind/bin/cgit deleted file mode 100755 index dcdfbe5..0000000 --- a/tests/valgrind/bin/cgit +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# Note that we currently use Git's suppression file and there are variables -# $GIT_VALGRIND and $CGIT_VALGRIND which point to different places. -exec valgrind -q --error-exitcode=126 \ - --suppressions="$GIT_VALGRIND/default.supp" \ - --gen-suppressions=all \ - --leak-check=no \ - --track-origins=yes \ - --log-fd=4 \ - --input-fd=4 \ - "$CGIT_VALGRIND/../../cgit" "$@" |