aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar John Keeping <john@keeping.me.uk>2013-04-01 23:09:05 (JST)
committerGravatar Jason A. Donenfeld <Jason@zx2c4.com>2013-04-09 05:27:11 (JST)
commitc95cc5ec56dbb7394015eb18201403be6d80f69b (patch)
tree7014b96a1a1408b5291532c0c442082aba693a80
parent8a92df033e974af6338b530a0d78d1bdb0b0f918 (diff)
downloadcgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.zip
cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.tar.gz
tests: use Git's test framework
This allows tests to run in parallel as well as letting us use "prove" or another TAP harness to run the tests. Git's test framework requires Git to be fully built before letting any tests run, so add a new target to the top-level Makefile which builds all of Git instead of just libgit.a and make the "test" target depend on that. Signed-off-by: John Keeping <john@keeping.me.uk>
-rw-r--r--Makefile7
-rwxr-xr-xtests/setup.sh130
-rwxr-xr-xtests/t0001-validate-git-versions.sh28
-rwxr-xr-xtests/t0010-validate-html.sh31
-rwxr-xr-xtests/t0020-validate-cache.sh32
-rwxr-xr-xtests/t0101-index.sh25
-rwxr-xr-xtests/t0102-summary.sh35
-rwxr-xr-xtests/t0103-log.sh33
-rwxr-xr-xtests/t0104-tree.sh33
-rwxr-xr-xtests/t0105-commit.sh41
-rwxr-xr-xtests/t0106-diff.sh21
-rwxr-xr-xtests/t0107-snapshot.sh77
-rwxr-xr-xtests/t0108-patch.sh37
13 files changed, 239 insertions, 291 deletions
diff --git a/Makefile b/Makefile
index 59edab0..ed29b3a 100644
--- a/Makefile
+++ b/Makefile
@@ -66,7 +66,10 @@ all:: cgit
66cgit: 66cgit:
67 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) -f ../cgit.mk ../cgit NO_CURL=1 67 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) -f ../cgit.mk ../cgit NO_CURL=1
68 68
69test: all 69git:
70 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1
71
72test: all git
70 $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all 73 $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all
71 74
72install: all 75install: all
@@ -145,7 +148,7 @@ get-git:
145tags: 148tags:
146 $(QUIET_TAGS)find . -name '*.[ch]' | xargs ctags 149 $(QUIET_TAGS)find . -name '*.[ch]' | xargs ctags
147 150
148.PHONY: all cgit get-git 151.PHONY: all cgit git get-git
149.PHONY: clean clean-doc cleanall 152.PHONY: clean clean-doc cleanall
150.PHONY: doc doc-html doc-man doc-pdf 153.PHONY: doc doc-html doc-man doc-pdf
151.PHONY: install install-doc install-html install-man install-pdf 154.PHONY: install install-doc install-html install-man install-pdf
diff --git a/tests/setup.sh b/tests/setup.sh
index e3c6c17..81e7220 100755
--- a/tests/setup.sh
+++ b/tests/setup.sh
@@ -15,46 +15,48 @@
15# run_test 'repo index' 'cgit_url "/" | tidy -e' 15# run_test 'repo index' 'cgit_url "/" | tidy -e'
16# run_test 'repo summary' 'cgit_url "/foo" | tidy -e' 16# run_test 'repo summary' 'cgit_url "/foo" | tidy -e'
17 17
18unset CDPATH 18: ${TEST_DIRECTORY=$(pwd)/../git/t}
19TEST_NO_CREATE_REPO=YesPlease
20. "$TEST_DIRECTORY"/test-lib.sh
21
22# Prepend the directory containing cgit to PATH.
23PATH="$(pwd)/../..:$PATH"
19 24
20mkrepo() { 25mkrepo() {
21 name=$1 26 name=$1
22 count=$2 27 count=$2
23 dir=$PWD 28 test_create_repo "$name"
24 test -d "$name" && return 29 (
25 printf "Creating testrepo %s\n" "$name" 30 cd "$name"
26 mkdir -p "$name" 31 n=1
27 cd "$name" 32 while test $n -le $count
28 git init 33 do
29 n=1 34 echo $n >file-$n
30 while test $n -le $count 35 git add file-$n
31 do 36 git commit -m "commit $n"
32 echo $n >file-$n 37 n=$(expr $n + 1)
33 git add file-$n 38 done
34 git commit -m "commit $n" 39 if test "$3" = "testplus"
35 n=$(expr $n + 1) 40 then
36 done 41 echo "hello" >a+b
37 if test "$3" = "testplus" 42 git add a+b
38 then 43 git commit -m "add a+b"
39 echo "hello" >a+b 44 git branch "1+2"
40 git add a+b 45 fi
41 git commit -m "add a+b" 46 )
42 git branch "1+2"
43 fi
44 cd "$dir"
45} 47}
46 48
47setup_repos() 49setup_repos()
48{ 50{
49 rm -rf trash/cache 51 rm -rf cache
50 mkdir -p trash/cache 52 mkdir -p cache
51 mkrepo trash/repos/foo 5 >/dev/null 53 mkrepo repos/foo 5 >/dev/null
52 mkrepo trash/repos/bar 50 >/dev/null 54 mkrepo repos/bar 50 >/dev/null
53 mkrepo trash/repos/foo+bar 10 testplus >/dev/null 55 mkrepo repos/foo+bar 10 testplus >/dev/null
54 mkrepo "trash/repos/with space" 2 >/dev/null 56 mkrepo "repos/with space" 2 >/dev/null
55 cat >trash/cgitrc <<EOF 57 cat >cgitrc <<EOF
56virtual-root=/ 58virtual-root=/
57cache-root=$PWD/trash/cache 59cache-root=$PWD/cache
58 60
59cache-size=1021 61cache-size=1021
60snapshots=tar.gz tar.bz zip 62snapshots=tar.gz tar.bz zip
@@ -66,83 +68,33 @@ summary-tags=5
66clone-url=git://example.org/\$CGIT_REPO_URL.git 68clone-url=git://example.org/\$CGIT_REPO_URL.git
67 69
68repo.url=foo 70repo.url=foo
69repo.path=$PWD/trash/repos/foo/.git 71repo.path=$PWD/repos/foo/.git
70# Do not specify a description for this repo, as it then will be assigned 72# Do not specify a description for this repo, as it then will be assigned
71# the constant value "[no description]" (which actually used to cause a 73# the constant value "[no description]" (which actually used to cause a
72# segfault). 74# segfault).
73 75
74repo.url=bar 76repo.url=bar
75repo.path=$PWD/trash/repos/bar/.git 77repo.path=$PWD/repos/bar/.git
76repo.desc=the bar repo 78repo.desc=the bar repo
77 79
78repo.url=foo+bar 80repo.url=foo+bar
79repo.path=$PWD/trash/repos/foo+bar/.git 81repo.path=$PWD/repos/foo+bar/.git
80repo.desc=the foo+bar repo 82repo.desc=the foo+bar repo
81 83
82repo.url=with space 84repo.url=with space
83repo.path=$PWD/trash/repos/with space/.git 85repo.path=$PWD/repos/with space/.git
84repo.desc=spaced repo 86repo.desc=spaced repo
85EOF 87EOF
86} 88}
87 89
88prepare_tests()
89{
90 setup_repos
91 rm -f test-output.log 2>/dev/null
92 test_count=0
93 test_failed=0
94 echo "[$0]" "$@" >test-output.log
95 echo "$@" "($0)"
96}
97
98tests_done()
99{
100 printf "\n"
101 if test $test_failed -gt 0
102 then
103 printf "test: *** %s failure(s), logfile=%s\n" \
104 $test_failed "$(pwd)/test-output.log"
105 false
106 fi
107}
108
109run_test()
110{
111 bug=0
112 if test "$1" = "BUG"
113 then
114 bug=1
115 shift
116 fi
117 desc=$1
118 script=$2
119 test_count=$(expr $test_count + 1)
120 printf "\ntest %d: name='%s'\n" $test_count "$desc" >>test-output.log
121 printf "test %d: eval='%s'\n" $test_count "$2" >>test-output.log
122 eval "$2" >>test-output.log 2>>test-output.log
123 res=$?
124 printf "test %d: exitcode=%d\n" $test_count $res >>test-output.log
125 if test $res = 0 -a $bug = 0
126 then
127 printf " %2d) %-60s [ok]\n" $test_count "$desc"
128 elif test $res = 0 -a $bug = 1
129 then
130 printf " %2d) %-60s [BUG FIXED]\n" $test_count "$desc"
131 elif test $bug = 1
132 then
133 printf " %2d) %-60s [KNOWN BUG]\n" $test_count "$desc"
134 else
135 test_failed=$(expr $test_failed + 1)
136 printf " %2d) %-60s [failed]\n" $test_count "$desc"
137 fi
138}
139
140cgit_query() 90cgit_query()
141{ 91{
142 CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="$1" "$PWD/../cgit" 92 CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="$1" cgit
143} 93}
144 94
145cgit_url() 95cgit_url()
146{ 96{
147 CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit" 97 CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="url=$1" cgit
148} 98}
99
100test -z "$CGIT_TEST_NO_CREATE_REPOS" && setup_repos
diff --git a/tests/t0001-validate-git-versions.sh b/tests/t0001-validate-git-versions.sh
index 3378358..754046e 100755
--- a/tests/t0001-validate-git-versions.sh
+++ b/tests/t0001-validate-git-versions.sh
@@ -1,36 +1,36 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Check Git version is correct'
4CGIT_TEST_NO_CREATE_REPOS=YesPlease
3. ./setup.sh 5. ./setup.sh
4 6
5prepare_tests 'Check Git version is correct' 7test_expect_success 'extract Git version from Makefile' '
6
7run_test 'extract Git version from Makefile' '
8 sed -n -e "/^GIT_VER[ ]*=/ { 8 sed -n -e "/^GIT_VER[ ]*=/ {
9 s/^GIT_VER[ ]*=[ ]*// 9 s/^GIT_VER[ ]*=[ ]*//
10 p 10 p
11 }" ../Makefile >trash/makefile_version 11 }" ../../Makefile >makefile_version
12' 12'
13 13
14run_test 'test Git version matches Makefile' ' 14test_expect_success 'test Git version matches Makefile' '
15 ( cat ../git/GIT-VERSION-FILE || echo "No GIT-VERSION-FILE" ) | 15 ( cat ../../git/GIT-VERSION-FILE || echo "No GIT-VERSION-FILE" ) |
16 sed -e "s/GIT_VERSION[ ]*=[ ]*//" >trash/git_version && 16 sed -e "s/GIT_VERSION[ ]*=[ ]*//" >git_version &&
17 diff -u trash/git_version trash/makefile_version 17 test_cmp git_version makefile_version
18' 18'
19 19
20run_test 'test submodule version matches Makefile' ' 20test_expect_success 'test submodule version matches Makefile' '
21 if ! test -e ../git/.git 21 if ! test -e ../../git/.git
22 then 22 then
23 echo "git/ is not a Git repository" >&2 23 echo "git/ is not a Git repository" >&2
24 else 24 else
25 ( 25 (
26 cd .. && 26 cd ../.. &&
27 sm_sha1=$(git ls-files --stage -- git | 27 sm_sha1=$(git ls-files --stage -- git |
28 sed -e "s/^[0-9]* \\([0-9a-f]*\\) [0-9] .*$/\\1/") && 28 sed -e "s/^[0-9]* \\([0-9a-f]*\\) [0-9] .*$/\\1/") &&
29 cd git && 29 cd git &&
30 git describe --match "v[0-9]*" $sm_sha1 30 git describe --match "v[0-9]*" $sm_sha1
31 ) | sed -e "s/^v//" >trash/sm_version && 31 ) | sed -e "s/^v//" >sm_version &&
32 diff -u trash/sm_version trash/makefile_version 32 test_cmp sm_version makefile_version
33 fi 33 fi
34' 34'
35 35
36tests_done 36test_done
diff --git a/tests/t0010-validate-html.sh b/tests/t0010-validate-html.sh
index 3fe4800..5bd0a25 100755
--- a/tests/t0010-validate-html.sh
+++ b/tests/t0010-validate-html.sh
@@ -1,5 +1,6 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Validate html with tidy'
3. ./setup.sh 4. ./setup.sh
4 5
5 6
@@ -7,9 +8,9 @@ test_url()
7{ 8{
8 tidy_opt="-eq" 9 tidy_opt="-eq"
9 test -z "$NO_TIDY_WARNINGS" || tidy_opt+=" --show-warnings no" 10 test -z "$NO_TIDY_WARNINGS" || tidy_opt+=" --show-warnings no"
10 cgit_url "$1" >trash/tidy-$test_count || return 11 cgit_url "$1" >tidy-$test_count || return
11 sed -ie "1,4d" trash/tidy-$test_count || return 12 sed -ie "1,4d" tidy-$test_count || return
12 "$tidy" $tidy_opt trash/tidy-$test_count 13 "$tidy" $tidy_opt tidy-$test_count
13 rc=$? 14 rc=$?
14 15
15 # tidy returns with exitcode 1 on warnings, 2 on error 16 # tidy returns with exitcode 1 on warnings, 2 on error
@@ -21,21 +22,19 @@ test_url()
21 fi 22 fi
22} 23}
23 24
24prepare_tests 'Validate html with tidy' 25tidy=`which tidy 2>/dev/null`
25
26tidy=`which tidy`
27test -n "$tidy" || { 26test -n "$tidy" || {
28 echo "Skipping tests: tidy not found" 27 skip_all='Skipping html validation tests: tidy not found'
29 tests_done 28 test_done
30 exit 29 exit
31} 30}
32 31
33run_test 'index page' 'test_url ""' 32test_expect_success 'index page' 'test_url ""'
34run_test 'foo' 'test_url "foo"' 33test_expect_success 'foo' 'test_url "foo"'
35run_test 'foo/log' 'test_url "foo/log"' 34test_expect_success 'foo/log' 'test_url "foo/log"'
36run_test 'foo/tree' 'test_url "foo/tree"' 35test_expect_success 'foo/tree' 'test_url "foo/tree"'
37run_test 'foo/tree/file-1' 'test_url "foo/tree/file-1"' 36test_expect_success 'foo/tree/file-1' 'test_url "foo/tree/file-1"'
38run_test 'foo/commit' 'test_url "foo/commit"' 37test_expect_success 'foo/commit' 'test_url "foo/commit"'
39run_test 'foo/diff' 'test_url "foo/diff"' 38test_expect_success 'foo/diff' 'test_url "foo/diff"'
40 39
41tests_done 40test_done
diff --git a/tests/t0020-validate-cache.sh b/tests/t0020-validate-cache.sh
index 53ec2eb..1910b47 100755
--- a/tests/t0020-validate-cache.sh
+++ b/tests/t0020-validate-cache.sh
@@ -1,13 +1,12 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Validate cache'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests 'Validate cache' 6test_expect_success 'verify cache-size=0' '
6 7
7run_test 'verify cache-size=0' ' 8 rm -f cache/* &&
8 9 sed -i -e "s/cache-size=1021$/cache-size=0/" cgitrc &&
9 rm -f trash/cache/* &&
10 sed -i -e "s/cache-size=1021$/cache-size=0/" trash/cgitrc &&
11 cgit_url "" && 10 cgit_url "" &&
12 cgit_url "foo" && 11 cgit_url "foo" &&
13 cgit_url "foo/refs" && 12 cgit_url "foo/refs" &&
@@ -21,13 +20,14 @@ run_test 'verify cache-size=0' '
21 cgit_url "bar/log" && 20 cgit_url "bar/log" &&
22 cgit_url "bar/diff" && 21 cgit_url "bar/diff" &&
23 cgit_url "bar/patch" && 22 cgit_url "bar/patch" &&
24 test 0 -eq $(ls trash/cache | wc -l) 23 ls cache >output &&
24 test_line_count = 0 output
25' 25'
26 26
27run_test 'verify cache-size=1' ' 27test_expect_success 'verify cache-size=1' '
28 28
29 rm -f trash/cache/* && 29 rm -f cache/* &&
30 sed -i -e "s/cache-size=0$/cache-size=1/" trash/cgitrc && 30 sed -i -e "s/cache-size=0$/cache-size=1/" cgitrc &&
31 cgit_url "" && 31 cgit_url "" &&
32 cgit_url "foo" && 32 cgit_url "foo" &&
33 cgit_url "foo/refs" && 33 cgit_url "foo/refs" &&
@@ -41,13 +41,14 @@ run_test 'verify cache-size=1' '
41 cgit_url "bar/log" && 41 cgit_url "bar/log" &&
42 cgit_url "bar/diff" && 42 cgit_url "bar/diff" &&
43 cgit_url "bar/patch" && 43 cgit_url "bar/patch" &&
44 test 1 -eq $(ls trash/cache | wc -l) 44 ls cache >output &&
45 test_line_count = 1 output
45' 46'
46 47
47run_test 'verify cache-size=1021' ' 48test_expect_success 'verify cache-size=1021' '
48 49
49 rm -f trash/cache/* && 50 rm -f cache/* &&
50 sed -i -e "s/cache-size=1$/cache-size=1021/" trash/cgitrc && 51 sed -i -e "s/cache-size=1$/cache-size=1021/" cgitrc &&
51 cgit_url "" && 52 cgit_url "" &&
52 cgit_url "foo" && 53 cgit_url "foo" &&
53 cgit_url "foo/refs" && 54 cgit_url "foo/refs" &&
@@ -61,7 +62,8 @@ run_test 'verify cache-size=1021' '
61 cgit_url "bar/log" && 62 cgit_url "bar/log" &&
62 cgit_url "bar/diff" && 63 cgit_url "bar/diff" &&
63 cgit_url "bar/patch" && 64 cgit_url "bar/patch" &&
64 test 13 -eq $(ls trash/cache | wc -l) 65 ls cache >output &&
66 test_line_count = 13 output
65' 67'
66 68
67tests_done 69test_done
diff --git a/tests/t0101-index.sh b/tests/t0101-index.sh
index ab63aca..82ef9b0 100755
--- a/tests/t0101-index.sh
+++ b/tests/t0101-index.sh
@@ -1,18 +1,17 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Check content on index page'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests "Check content on index page" 6test_expect_success 'generate index page' 'cgit_url "" >tmp'
7test_expect_success 'find foo repo' 'grep "foo" tmp'
8test_expect_success 'find foo description' 'grep "\[no description\]" tmp'
9test_expect_success 'find bar repo' 'grep "bar" tmp'
10test_expect_success 'find bar description' 'grep "the bar repo" tmp'
11test_expect_success 'find foo+bar repo' 'grep ">foo+bar<" tmp'
12test_expect_success 'verify foo+bar link' 'grep "/foo+bar/" tmp'
13test_expect_success 'verify "with%20space" link' 'grep "/with%20space/" tmp'
14test_expect_success 'no tree-link' '! grep "foo/tree" tmp'
15test_expect_success 'no log-link' '! grep "foo/log" tmp'
6 16
7run_test 'generate index page' 'cgit_url "" >trash/tmp' 17test_done
8run_test 'find foo repo' 'grep "foo" trash/tmp'
9run_test 'find foo description' 'grep "\[no description\]" trash/tmp'
10run_test 'find bar repo' 'grep "bar" trash/tmp'
11run_test 'find bar description' 'grep "the bar repo" trash/tmp'
12run_test 'find foo+bar repo' 'grep ">foo+bar<" trash/tmp'
13run_test 'verify foo+bar link' 'grep "/foo+bar/" trash/tmp'
14run_test 'verify "with%20space" link' 'grep "/with%20space/" trash/tmp'
15run_test 'no tree-link' '! grep "foo/tree" trash/tmp'
16run_test 'no log-link' '! grep "foo/log" trash/tmp'
17
18tests_done
diff --git a/tests/t0102-summary.sh b/tests/t0102-summary.sh
index f778cb4..b8864cb 100755
--- a/tests/t0102-summary.sh
+++ b/tests/t0102-summary.sh
@@ -1,26 +1,25 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Check content on summary page'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests "Check content on summary page" 6test_expect_success 'generate foo summary' 'cgit_url "foo" >tmp'
6 7test_expect_success 'find commit 1' 'grep "commit 1" tmp'
7run_test 'generate foo summary' 'cgit_url "foo" >trash/tmp' 8test_expect_success 'find commit 5' 'grep "commit 5" tmp'
8run_test 'find commit 1' 'grep "commit 1" trash/tmp' 9test_expect_success 'find branch master' 'grep "master" tmp'
9run_test 'find commit 5' 'grep "commit 5" trash/tmp' 10test_expect_success 'no tags' '! grep "tags" tmp'
10run_test 'find branch master' 'grep "master" trash/tmp' 11test_expect_success 'clone-url expanded correctly' '
11run_test 'no tags' '! grep "tags" trash/tmp' 12 grep "git://example.org/foo.git" tmp
12run_test 'clone-url expanded correctly' '
13 grep "git://example.org/foo.git" trash/tmp
14' 13'
15 14
16run_test 'generate bar summary' 'cgit_url "bar" >trash/tmp' 15test_expect_success 'generate bar summary' 'cgit_url "bar" >tmp'
17run_test 'no commit 45' '! grep "commit 45" trash/tmp' 16test_expect_success 'no commit 45' '! grep "commit 45" tmp'
18run_test 'find commit 46' 'grep "commit 46" trash/tmp' 17test_expect_success 'find commit 46' 'grep "commit 46" tmp'
19run_test 'find commit 50' 'grep "commit 50" trash/tmp' 18test_expect_success 'find commit 50' 'grep "commit 50" tmp'
20run_test 'find branch master' 'grep "master" trash/tmp' 19test_expect_success 'find branch master' 'grep "master" tmp'
21run_test 'no tags' '! grep "tags" trash/tmp' 20test_expect_success 'no tags' '! grep "tags" tmp'
22run_test 'clone-url expanded correctly' ' 21test_expect_success 'clone-url expanded correctly' '
23 grep "git://example.org/bar.git" trash/tmp 22 grep "git://example.org/bar.git" tmp
24' 23'
25 24
26tests_done 25test_done
diff --git a/tests/t0103-log.sh b/tests/t0103-log.sh
index 67fcba0..bdf1435 100755
--- a/tests/t0103-log.sh
+++ b/tests/t0103-log.sh
@@ -1,25 +1,24 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Check content on log page'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests "Check content on log page" 6test_expect_success 'generate foo/log' 'cgit_url "foo/log" >tmp'
7test_expect_success 'find commit 1' 'grep "commit 1" tmp'
8test_expect_success 'find commit 5' 'grep "commit 5" tmp'
6 9
7run_test 'generate foo/log' 'cgit_url "foo/log" >trash/tmp' 10test_expect_success 'generate bar/log' 'cgit_url "bar/log" >tmp'
8run_test 'find commit 1' 'grep "commit 1" trash/tmp' 11test_expect_success 'find commit 1' 'grep "commit 1" tmp'
9run_test 'find commit 5' 'grep "commit 5" trash/tmp' 12test_expect_success 'find commit 50' 'grep "commit 50" tmp'
10 13
11run_test 'generate bar/log' 'cgit_url "bar/log" >trash/tmp' 14test_expect_success 'generate "with%20space/log?qt=grep&q=commit+1"' '
12run_test 'find commit 1' 'grep "commit 1" trash/tmp' 15 cgit_url "with+space/log&qt=grep&q=commit+1" >tmp
13run_test 'find commit 50' 'grep "commit 50" trash/tmp'
14
15run_test 'generate "with%20space/log?qt=grep&q=commit+1"' '
16 cgit_url "with+space/log&qt=grep&q=commit+1" >trash/tmp
17' 16'
18run_test 'find commit 1' 'grep "commit 1" trash/tmp' 17test_expect_success 'find commit 1' 'grep "commit 1" tmp'
19run_test 'find link with %20 in path' 'grep "/with%20space/log/?qt=grep" trash/tmp' 18test_expect_success 'find link with %20 in path' 'grep "/with%20space/log/?qt=grep" tmp'
20run_test 'find link with + in arg' 'grep "/log/?qt=grep&amp;q=commit+1" trash/tmp' 19test_expect_success 'find link with + in arg' 'grep "/log/?qt=grep&amp;q=commit+1" tmp'
21run_test 'no links with space in path' '! grep "href=./with space/" trash/tmp' 20test_expect_success 'no links with space in path' '! grep "href=./with space/" tmp'
22run_test 'no links with space in arg' '! grep "q=commit 1" trash/tmp' 21test_expect_success 'no links with space in arg' '! grep "q=commit 1" tmp'
23run_test 'commit 2 is not visible' '! grep "commit 2" trash/tmp' 22test_expect_success 'commit 2 is not visible' '! grep "commit 2" tmp'
24 23
25tests_done 24test_done
diff --git a/tests/t0104-tree.sh b/tests/t0104-tree.sh
index 7aa3b8d..100b026 100755
--- a/tests/t0104-tree.sh
+++ b/tests/t0104-tree.sh
@@ -1,33 +1,32 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Check content on tree page'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests "Check content on tree page" 6test_expect_success 'generate bar/tree' 'cgit_url "bar/tree" >tmp'
7test_expect_success 'find file-1' 'grep "file-1" tmp'
8test_expect_success 'find file-50' 'grep "file-50" tmp'
6 9
7run_test 'generate bar/tree' 'cgit_url "bar/tree" >trash/tmp' 10test_expect_success 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >tmp'
8run_test 'find file-1' 'grep "file-1" trash/tmp'
9run_test 'find file-50' 'grep "file-50" trash/tmp'
10 11
11run_test 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >trash/tmp' 12test_expect_success 'find line 1' '
12 13 grep "<a class=.no. id=.n1. name=.n1. href=.#n1.>1</a>" tmp
13run_test 'find line 1' '
14 grep "<a class=.no. id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp
15' 14'
16 15
17run_test 'no line 2' ' 16test_expect_success 'no line 2' '
18 ! grep "<a class=.no. id=.n2. name=.n2. href=.#n2.>2</a>" trash/tmp 17 ! grep "<a class=.no. id=.n2. name=.n2. href=.#n2.>2</a>" tmp
19' 18'
20 19
21run_test 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >trash/tmp' 20test_expect_success 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >tmp'
22 21
23run_test 'verify a+b link' ' 22test_expect_success 'verify a+b link' '
24 grep "/foo+bar/tree/a+b" trash/tmp 23 grep "/foo+bar/tree/a+b" tmp
25' 24'
26 25
27run_test 'generate foo+bar/tree?h=1+2' 'cgit_url "foo%2bbar/tree&h=1%2b2" >trash/tmp' 26test_expect_success 'generate foo+bar/tree?h=1+2' 'cgit_url "foo%2bbar/tree&h=1%2b2" >tmp'
28 27
29run_test 'verify a+b?h=1+2 link' ' 28test_expect_success 'verify a+b?h=1+2 link' '
30 grep "/foo+bar/tree/a+b?h=1%2b2" trash/tmp 29 grep "/foo+bar/tree/a+b?h=1%2b2" tmp
31' 30'
32 31
33tests_done 32test_done
diff --git a/tests/t0105-commit.sh b/tests/t0105-commit.sh
index 31b554b..9cdf55c 100755
--- a/tests/t0105-commit.sh
+++ b/tests/t0105-commit.sh
@@ -1,37 +1,36 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Check content on commit page'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests "Check content on commit page" 6test_expect_success 'generate foo/commit' 'cgit_url "foo/commit" >tmp'
7test_expect_success 'find tree link' 'grep "<a href=./foo/tree/.>" tmp'
8test_expect_success 'find parent link' 'grep -E "<a href=./foo/commit/\?id=.+>" tmp'
6 9
7run_test 'generate foo/commit' 'cgit_url "foo/commit" >trash/tmp' 10test_expect_success 'find commit subject' '
8run_test 'find tree link' 'grep "<a href=./foo/tree/.>" trash/tmp' 11 grep "<div class=.commit-subject.>commit 5<" tmp
9run_test 'find parent link' 'grep -E "<a href=./foo/commit/\?id=.+>" trash/tmp'
10
11run_test 'find commit subject' '
12 grep "<div class=.commit-subject.>commit 5<" trash/tmp
13' 12'
14 13
15run_test 'find commit msg' 'grep "<div class=.commit-msg.></div>" trash/tmp' 14test_expect_success 'find commit msg' 'grep "<div class=.commit-msg.></div>" tmp'
16run_test 'find diffstat' 'grep "<table summary=.diffstat. class=.diffstat.>" trash/tmp' 15test_expect_success 'find diffstat' 'grep "<table summary=.diffstat. class=.diffstat.>" tmp'
17 16
18run_test 'find diff summary' ' 17test_expect_success 'find diff summary' '
19 grep "1 files changed, 1 insertions, 0 deletions" trash/tmp 18 grep "1 files changed, 1 insertions, 0 deletions" tmp
20' 19'
21 20
22run_test 'get root commit' ' 21test_expect_success 'get root commit' '
23 root=$(cd trash/repos/foo && git rev-list --reverse HEAD | head -1) && 22 root=$(cd repos/foo && git rev-list --reverse HEAD | head -1) &&
24 cgit_url "foo/commit&id=$root" >trash/tmp && 23 cgit_url "foo/commit&id=$root" >tmp &&
25 grep "</html>" trash/tmp 24 grep "</html>" tmp
26' 25'
27 26
28run_test 'root commit contains diffstat' ' 27test_expect_success 'root commit contains diffstat' '
29 grep "<a href=./foo/diff/file-1.id=[0-9a-f]\{40\}.>file-1</a>" trash/tmp 28 grep "<a href=./foo/diff/file-1.id=[0-9a-f]\{40\}.>file-1</a>" tmp
30' 29'
31 30
32run_test 'root commit contains diff' ' 31test_expect_success 'root commit contains diff' '
33 grep ">diff --git a/file-1 b/file-1<" trash/tmp && 32 grep ">diff --git a/file-1 b/file-1<" tmp &&
34 grep "<div class=.add.>+1</div>" trash/tmp 33 grep "<div class=.add.>+1</div>" tmp
35' 34'
36 35
37tests_done 36test_done
diff --git a/tests/t0106-diff.sh b/tests/t0106-diff.sh
index eee0c8c..82b645e 100755
--- a/tests/t0106-diff.sh
+++ b/tests/t0106-diff.sh
@@ -1,20 +1,19 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Check content on diff page'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests "Check content on diff page" 6test_expect_success 'generate foo/diff' 'cgit_url "foo/diff" >tmp'
7test_expect_success 'find diff header' 'grep "a/file-5 b/file-5" tmp'
8test_expect_success 'find blob link' 'grep "<a href=./foo/tree/file-5?id=" tmp'
9test_expect_success 'find added file' 'grep "new file mode 100644" tmp'
6 10
7run_test 'generate foo/diff' 'cgit_url "foo/diff" >trash/tmp' 11test_expect_success 'find hunk header' '
8run_test 'find diff header' 'grep "a/file-5 b/file-5" trash/tmp' 12 grep "<div class=.hunk.>@@ -0,0 +1 @@</div>" tmp
9run_test 'find blob link' 'grep "<a href=./foo/tree/file-5?id=" trash/tmp'
10run_test 'find added file' 'grep "new file mode 100644" trash/tmp'
11
12run_test 'find hunk header' '
13 grep "<div class=.hunk.>@@ -0,0 +1 @@</div>" trash/tmp
14' 13'
15 14
16run_test 'find added line' ' 15test_expect_success 'find added line' '
17 grep "<div class=.add.>+5</div>" trash/tmp 16 grep "<div class=.add.>+5</div>" tmp
18' 17'
19 18
20tests_done 19test_done
diff --git a/tests/t0107-snapshot.sh b/tests/t0107-snapshot.sh
index 132d2e9..4fbe45e 100755
--- a/tests/t0107-snapshot.sh
+++ b/tests/t0107-snapshot.sh
@@ -1,77 +1,76 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Verify snapshot'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests "Verify snapshot" 6test_expect_success 'get foo/snapshot/master.tar.gz' '
6 7 cgit_url "foo/snapshot/master.tar.gz" >tmp
7run_test 'get foo/snapshot/master.tar.gz' '
8 cgit_url "foo/snapshot/master.tar.gz" >trash/tmp
9' 8'
10 9
11run_test 'check html headers' ' 10test_expect_success 'check html headers' '
12 head -n 1 trash/tmp | 11 head -n 1 tmp |
13 grep "Content-Type: application/x-gzip" && 12 grep "Content-Type: application/x-gzip" &&
14 13
15 head -n 2 trash/tmp | 14 head -n 2 tmp |
16 grep "Content-Disposition: inline; filename=.master.tar.gz." 15 grep "Content-Disposition: inline; filename=.master.tar.gz."
17' 16'
18 17
19run_test 'strip off the header lines' ' 18test_expect_success 'strip off the header lines' '
20 tail -n +6 trash/tmp > trash/master.tar.gz 19 tail -n +6 tmp > master.tar.gz
21' 20'
22 21
23run_test 'verify gzip format' ' 22test_expect_success 'verify gzip format' '
24 gunzip --test trash/master.tar.gz 23 gunzip --test master.tar.gz
25' 24'
26 25
27run_test 'untar' ' 26test_expect_success 'untar' '
28 rm -rf trash/master && 27 rm -rf master &&
29 tar -xf trash/master.tar.gz -C trash 28 tar -xf master.tar.gz
30' 29'
31 30
32run_test 'count files' ' 31test_expect_success 'count files' '
33 c=$(ls -1 trash/master/ | wc -l) && 32 ls master/ >output &&
34 test $c = 5 33 test_line_count = 5 output
35' 34'
36 35
37run_test 'verify untarred file-5' ' 36test_expect_success 'verify untarred file-5' '
38 grep "^5$" trash/master/file-5 && 37 grep "^5$" master/file-5 &&
39 test $(cat trash/master/file-5 | wc -l) = 1 38 test_line_count = 1 master/file-5
40' 39'
41 40
42run_test 'get foo/snapshot/master.zip' ' 41test_expect_success 'get foo/snapshot/master.zip' '
43 cgit_url "foo/snapshot/master.zip" >trash/tmp 42 cgit_url "foo/snapshot/master.zip" >tmp
44' 43'
45 44
46run_test 'check HTML headers (zip)' ' 45test_expect_success 'check HTML headers (zip)' '
47 head -n 1 trash/tmp | 46 head -n 1 tmp |
48 grep "Content-Type: application/x-zip" && 47 grep "Content-Type: application/x-zip" &&
49 48
50 head -n 2 trash/tmp | 49 head -n 2 tmp |
51 grep "Content-Disposition: inline; filename=.master.zip." 50 grep "Content-Disposition: inline; filename=.master.zip."
52' 51'
53 52
54run_test 'strip off the header lines (zip)' ' 53test_expect_success 'strip off the header lines (zip)' '
55 tail -n +6 trash/tmp >trash/master.zip 54 tail -n +6 tmp >master.zip
56' 55'
57 56
58run_test 'verify zip format' ' 57test_expect_success 'verify zip format' '
59 unzip -t trash/master.zip 58 unzip -t master.zip
60' 59'
61 60
62run_test 'unzip' ' 61test_expect_success 'unzip' '
63 rm -rf trash/master && 62 rm -rf master &&
64 unzip trash/master.zip -d trash 63 unzip master.zip
65' 64'
66 65
67run_test 'count files (zip)' ' 66test_expect_success 'count files (zip)' '
68 c=$(ls -1 trash/master/ | wc -l) && 67 ls master/ >output &&
69 test $c = 5 68 test_line_count = 5 output
70' 69'
71 70
72run_test 'verify unzipped file-5' ' 71test_expect_success 'verify unzipped file-5' '
73 grep "^5$" trash/master/file-5 && 72 grep "^5$" master/file-5 &&
74 test $(cat trash/master/file-5 | wc -l) = 1 73 test_line_count = 1 master/file-5
75' 74'
76 75
77tests_done 76test_done
diff --git a/tests/t0108-patch.sh b/tests/t0108-patch.sh
index f92f69c..3b5bae4 100755
--- a/tests/t0108-patch.sh
+++ b/tests/t0108-patch.sh
@@ -1,39 +1,38 @@
1#!/bin/sh 1#!/bin/sh
2 2
3test_description='Check content on patch page'
3. ./setup.sh 4. ./setup.sh
4 5
5prepare_tests "Check content on patch page" 6test_expect_success 'generate foo/patch' '
6 7 cgit_query "url=foo/patch" >tmp
7run_test 'generate foo/patch' '
8 cgit_query "url=foo/patch" >trash/tmp
9' 8'
10 9
11run_test 'find `From:` line' ' 10test_expect_success 'find `From:` line' '
12 grep "^From: " trash/tmp 11 grep "^From: " tmp
13' 12'
14 13
15run_test 'find `Date:` line' ' 14test_expect_success 'find `Date:` line' '
16 grep "^Date: " trash/tmp 15 grep "^Date: " tmp
17' 16'
18 17
19run_test 'find `Subject:` line' ' 18test_expect_success 'find `Subject:` line' '
20 grep "^Subject: commit 5" trash/tmp 19 grep "^Subject: commit 5" tmp
21' 20'
22 21
23run_test 'find `cgit` signature' ' 22test_expect_success 'find `cgit` signature' '
24 tail -1 trash/tmp | grep "^cgit" 23 tail -1 tmp | grep "^cgit"
25' 24'
26 25
27run_test 'find initial commit' ' 26test_expect_success 'find initial commit' '
28 root=$(git --git-dir="$PWD/trash/repos/foo/.git" rev-list HEAD | tail -1) 27 root=$(git --git-dir="$PWD/repos/foo/.git" rev-list HEAD | tail -1)
29' 28'
30 29
31run_test 'generate patch for initial commit' ' 30test_expect_success 'generate patch for initial commit' '
32 cgit_query "url=foo/patch&id=$root" >trash/tmp 31 cgit_query "url=foo/patch&id=$root" >tmp
33' 32'
34 33
35run_test 'find `cgit` signature' ' 34test_expect_success 'find `cgit` signature' '
36 tail -1 trash/tmp | grep "^cgit" 35 tail -1 tmp | grep "^cgit"
37' 36'
38 37
39tests_done 38test_done