diff options
author | John Keeping <john@keeping.me.uk> | 2013-04-01 23:09:05 (JST) |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2013-04-09 05:27:11 (JST) |
commit | c95cc5ec56dbb7394015eb18201403be6d80f69b (patch) | |
tree | 7014b96a1a1408b5291532c0c442082aba693a80 /tests | |
parent | 8a92df033e974af6338b530a0d78d1bdb0b0f918 (diff) | |
download | cgit-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>
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/setup.sh | 130 | ||||
-rwxr-xr-x | tests/t0001-validate-git-versions.sh | 28 | ||||
-rwxr-xr-x | tests/t0010-validate-html.sh | 31 | ||||
-rwxr-xr-x | tests/t0020-validate-cache.sh | 32 | ||||
-rwxr-xr-x | tests/t0101-index.sh | 25 | ||||
-rwxr-xr-x | tests/t0102-summary.sh | 35 | ||||
-rwxr-xr-x | tests/t0103-log.sh | 33 | ||||
-rwxr-xr-x | tests/t0104-tree.sh | 33 | ||||
-rwxr-xr-x | tests/t0105-commit.sh | 41 | ||||
-rwxr-xr-x | tests/t0106-diff.sh | 21 | ||||
-rwxr-xr-x | tests/t0107-snapshot.sh | 77 | ||||
-rwxr-xr-x | tests/t0108-patch.sh | 37 |
12 files changed, 234 insertions, 289 deletions
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 | ||
18 | unset CDPATH | 18 | : ${TEST_DIRECTORY=$(pwd)/../git/t} |
19 | TEST_NO_CREATE_REPO=YesPlease | ||
20 | . "$TEST_DIRECTORY"/test-lib.sh | ||
21 | |||
22 | # Prepend the directory containing cgit to PATH. | ||
23 | PATH="$(pwd)/../..:$PATH" | ||
19 | 24 | ||
20 | mkrepo() { | 25 | mkrepo() { |
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 | ||
47 | setup_repos() | 49 | setup_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 |
56 | virtual-root=/ | 58 | virtual-root=/ |
57 | cache-root=$PWD/trash/cache | 59 | cache-root=$PWD/cache |
58 | 60 | ||
59 | cache-size=1021 | 61 | cache-size=1021 |
60 | snapshots=tar.gz tar.bz zip | 62 | snapshots=tar.gz tar.bz zip |
@@ -66,83 +68,33 @@ summary-tags=5 | |||
66 | clone-url=git://example.org/\$CGIT_REPO_URL.git | 68 | clone-url=git://example.org/\$CGIT_REPO_URL.git |
67 | 69 | ||
68 | repo.url=foo | 70 | repo.url=foo |
69 | repo.path=$PWD/trash/repos/foo/.git | 71 | repo.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 | ||
74 | repo.url=bar | 76 | repo.url=bar |
75 | repo.path=$PWD/trash/repos/bar/.git | 77 | repo.path=$PWD/repos/bar/.git |
76 | repo.desc=the bar repo | 78 | repo.desc=the bar repo |
77 | 79 | ||
78 | repo.url=foo+bar | 80 | repo.url=foo+bar |
79 | repo.path=$PWD/trash/repos/foo+bar/.git | 81 | repo.path=$PWD/repos/foo+bar/.git |
80 | repo.desc=the foo+bar repo | 82 | repo.desc=the foo+bar repo |
81 | 83 | ||
82 | repo.url=with space | 84 | repo.url=with space |
83 | repo.path=$PWD/trash/repos/with space/.git | 85 | repo.path=$PWD/repos/with space/.git |
84 | repo.desc=spaced repo | 86 | repo.desc=spaced repo |
85 | EOF | 87 | EOF |
86 | } | 88 | } |
87 | 89 | ||
88 | prepare_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 | |||
98 | tests_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 | |||
109 | run_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 | |||
140 | cgit_query() | 90 | cgit_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 | ||
145 | cgit_url() | 95 | cgit_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 | |||
100 | 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 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 | ||
3 | test_description='Check Git version is correct' | ||
4 | CGIT_TEST_NO_CREATE_REPOS=YesPlease | ||
3 | . ./setup.sh | 5 | . ./setup.sh |
4 | 6 | ||
5 | prepare_tests 'Check Git version is correct' | 7 | test_expect_success 'extract Git version from Makefile' ' |
6 | |||
7 | run_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 | ||
14 | run_test 'test Git version matches Makefile' ' | 14 | test_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 | ||
20 | run_test 'test submodule version matches Makefile' ' | 20 | test_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 | ||
36 | tests_done | 36 | test_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 | ||
3 | test_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 | ||
24 | prepare_tests 'Validate html with tidy' | 25 | tidy=`which tidy 2>/dev/null` |
25 | |||
26 | tidy=`which tidy` | ||
27 | test -n "$tidy" || { | 26 | test -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 | ||
33 | run_test 'index page' 'test_url ""' | 32 | test_expect_success 'index page' 'test_url ""' |
34 | run_test 'foo' 'test_url "foo"' | 33 | test_expect_success 'foo' 'test_url "foo"' |
35 | run_test 'foo/log' 'test_url "foo/log"' | 34 | test_expect_success 'foo/log' 'test_url "foo/log"' |
36 | run_test 'foo/tree' 'test_url "foo/tree"' | 35 | test_expect_success 'foo/tree' 'test_url "foo/tree"' |
37 | run_test 'foo/tree/file-1' 'test_url "foo/tree/file-1"' | 36 | test_expect_success 'foo/tree/file-1' 'test_url "foo/tree/file-1"' |
38 | run_test 'foo/commit' 'test_url "foo/commit"' | 37 | test_expect_success 'foo/commit' 'test_url "foo/commit"' |
39 | run_test 'foo/diff' 'test_url "foo/diff"' | 38 | test_expect_success 'foo/diff' 'test_url "foo/diff"' |
40 | 39 | ||
41 | tests_done | 40 | test_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 | ||
3 | test_description='Validate cache' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests 'Validate cache' | 6 | test_expect_success 'verify cache-size=0' ' |
6 | 7 | ||
7 | run_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 | ||
27 | run_test 'verify cache-size=1' ' | 27 | test_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 | ||
47 | run_test 'verify cache-size=1021' ' | 48 | test_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 | ||
67 | tests_done | 69 | test_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 | ||
3 | test_description='Check content on index page' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests "Check content on index page" | 6 | test_expect_success 'generate index page' 'cgit_url "" >tmp' |
7 | test_expect_success 'find foo repo' 'grep "foo" tmp' | ||
8 | test_expect_success 'find foo description' 'grep "\[no description\]" tmp' | ||
9 | test_expect_success 'find bar repo' 'grep "bar" tmp' | ||
10 | test_expect_success 'find bar description' 'grep "the bar repo" tmp' | ||
11 | test_expect_success 'find foo+bar repo' 'grep ">foo+bar<" tmp' | ||
12 | test_expect_success 'verify foo+bar link' 'grep "/foo+bar/" tmp' | ||
13 | test_expect_success 'verify "with%20space" link' 'grep "/with%20space/" tmp' | ||
14 | test_expect_success 'no tree-link' '! grep "foo/tree" tmp' | ||
15 | test_expect_success 'no log-link' '! grep "foo/log" tmp' | ||
6 | 16 | ||
7 | run_test 'generate index page' 'cgit_url "" >trash/tmp' | 17 | test_done |
8 | run_test 'find foo repo' 'grep "foo" trash/tmp' | ||
9 | run_test 'find foo description' 'grep "\[no description\]" trash/tmp' | ||
10 | run_test 'find bar repo' 'grep "bar" trash/tmp' | ||
11 | run_test 'find bar description' 'grep "the bar repo" trash/tmp' | ||
12 | run_test 'find foo+bar repo' 'grep ">foo+bar<" trash/tmp' | ||
13 | run_test 'verify foo+bar link' 'grep "/foo+bar/" trash/tmp' | ||
14 | run_test 'verify "with%20space" link' 'grep "/with%20space/" trash/tmp' | ||
15 | run_test 'no tree-link' '! grep "foo/tree" trash/tmp' | ||
16 | run_test 'no log-link' '! grep "foo/log" trash/tmp' | ||
17 | |||
18 | tests_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 | ||
3 | test_description='Check content on summary page' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests "Check content on summary page" | 6 | test_expect_success 'generate foo summary' 'cgit_url "foo" >tmp' |
6 | 7 | test_expect_success 'find commit 1' 'grep "commit 1" tmp' | |
7 | run_test 'generate foo summary' 'cgit_url "foo" >trash/tmp' | 8 | test_expect_success 'find commit 5' 'grep "commit 5" tmp' |
8 | run_test 'find commit 1' 'grep "commit 1" trash/tmp' | 9 | test_expect_success 'find branch master' 'grep "master" tmp' |
9 | run_test 'find commit 5' 'grep "commit 5" trash/tmp' | 10 | test_expect_success 'no tags' '! grep "tags" tmp' |
10 | run_test 'find branch master' 'grep "master" trash/tmp' | 11 | test_expect_success 'clone-url expanded correctly' ' |
11 | run_test 'no tags' '! grep "tags" trash/tmp' | 12 | grep "git://example.org/foo.git" tmp |
12 | run_test 'clone-url expanded correctly' ' | ||
13 | grep "git://example.org/foo.git" trash/tmp | ||
14 | ' | 13 | ' |
15 | 14 | ||
16 | run_test 'generate bar summary' 'cgit_url "bar" >trash/tmp' | 15 | test_expect_success 'generate bar summary' 'cgit_url "bar" >tmp' |
17 | run_test 'no commit 45' '! grep "commit 45" trash/tmp' | 16 | test_expect_success 'no commit 45' '! grep "commit 45" tmp' |
18 | run_test 'find commit 46' 'grep "commit 46" trash/tmp' | 17 | test_expect_success 'find commit 46' 'grep "commit 46" tmp' |
19 | run_test 'find commit 50' 'grep "commit 50" trash/tmp' | 18 | test_expect_success 'find commit 50' 'grep "commit 50" tmp' |
20 | run_test 'find branch master' 'grep "master" trash/tmp' | 19 | test_expect_success 'find branch master' 'grep "master" tmp' |
21 | run_test 'no tags' '! grep "tags" trash/tmp' | 20 | test_expect_success 'no tags' '! grep "tags" tmp' |
22 | run_test 'clone-url expanded correctly' ' | 21 | test_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 | ||
26 | tests_done | 25 | test_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 | ||
3 | test_description='Check content on log page' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests "Check content on log page" | 6 | test_expect_success 'generate foo/log' 'cgit_url "foo/log" >tmp' |
7 | test_expect_success 'find commit 1' 'grep "commit 1" tmp' | ||
8 | test_expect_success 'find commit 5' 'grep "commit 5" tmp' | ||
6 | 9 | ||
7 | run_test 'generate foo/log' 'cgit_url "foo/log" >trash/tmp' | 10 | test_expect_success 'generate bar/log' 'cgit_url "bar/log" >tmp' |
8 | run_test 'find commit 1' 'grep "commit 1" trash/tmp' | 11 | test_expect_success 'find commit 1' 'grep "commit 1" tmp' |
9 | run_test 'find commit 5' 'grep "commit 5" trash/tmp' | 12 | test_expect_success 'find commit 50' 'grep "commit 50" tmp' |
10 | 13 | ||
11 | run_test 'generate bar/log' 'cgit_url "bar/log" >trash/tmp' | 14 | test_expect_success 'generate "with%20space/log?qt=grep&q=commit+1"' ' |
12 | run_test 'find commit 1' 'grep "commit 1" trash/tmp' | 15 | cgit_url "with+space/log&qt=grep&q=commit+1" >tmp |
13 | run_test 'find commit 50' 'grep "commit 50" trash/tmp' | ||
14 | |||
15 | run_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 | ' |
18 | run_test 'find commit 1' 'grep "commit 1" trash/tmp' | 17 | test_expect_success 'find commit 1' 'grep "commit 1" tmp' |
19 | run_test 'find link with %20 in path' 'grep "/with%20space/log/?qt=grep" trash/tmp' | 18 | test_expect_success 'find link with %20 in path' 'grep "/with%20space/log/?qt=grep" tmp' |
20 | run_test 'find link with + in arg' 'grep "/log/?qt=grep&q=commit+1" trash/tmp' | 19 | test_expect_success 'find link with + in arg' 'grep "/log/?qt=grep&q=commit+1" tmp' |
21 | run_test 'no links with space in path' '! grep "href=./with space/" trash/tmp' | 20 | test_expect_success 'no links with space in path' '! grep "href=./with space/" tmp' |
22 | run_test 'no links with space in arg' '! grep "q=commit 1" trash/tmp' | 21 | test_expect_success 'no links with space in arg' '! grep "q=commit 1" tmp' |
23 | run_test 'commit 2 is not visible' '! grep "commit 2" trash/tmp' | 22 | test_expect_success 'commit 2 is not visible' '! grep "commit 2" tmp' |
24 | 23 | ||
25 | tests_done | 24 | test_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 | ||
3 | test_description='Check content on tree page' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests "Check content on tree page" | 6 | test_expect_success 'generate bar/tree' 'cgit_url "bar/tree" >tmp' |
7 | test_expect_success 'find file-1' 'grep "file-1" tmp' | ||
8 | test_expect_success 'find file-50' 'grep "file-50" tmp' | ||
6 | 9 | ||
7 | run_test 'generate bar/tree' 'cgit_url "bar/tree" >trash/tmp' | 10 | test_expect_success 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >tmp' |
8 | run_test 'find file-1' 'grep "file-1" trash/tmp' | ||
9 | run_test 'find file-50' 'grep "file-50" trash/tmp' | ||
10 | 11 | ||
11 | run_test 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >trash/tmp' | 12 | test_expect_success 'find line 1' ' |
12 | 13 | grep "<a class=.no. id=.n1. name=.n1. href=.#n1.>1</a>" tmp | |
13 | run_test 'find line 1' ' | ||
14 | grep "<a class=.no. id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp | ||
15 | ' | 14 | ' |
16 | 15 | ||
17 | run_test 'no line 2' ' | 16 | test_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 | ||
21 | run_test 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >trash/tmp' | 20 | test_expect_success 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >tmp' |
22 | 21 | ||
23 | run_test 'verify a+b link' ' | 22 | test_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 | ||
27 | run_test 'generate foo+bar/tree?h=1+2' 'cgit_url "foo%2bbar/tree&h=1%2b2" >trash/tmp' | 26 | test_expect_success 'generate foo+bar/tree?h=1+2' 'cgit_url "foo%2bbar/tree&h=1%2b2" >tmp' |
28 | 27 | ||
29 | run_test 'verify a+b?h=1+2 link' ' | 28 | test_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 | ||
33 | tests_done | 32 | test_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 | ||
3 | test_description='Check content on commit page' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests "Check content on commit page" | 6 | test_expect_success 'generate foo/commit' 'cgit_url "foo/commit" >tmp' |
7 | test_expect_success 'find tree link' 'grep "<a href=./foo/tree/.>" tmp' | ||
8 | test_expect_success 'find parent link' 'grep -E "<a href=./foo/commit/\?id=.+>" tmp' | ||
6 | 9 | ||
7 | run_test 'generate foo/commit' 'cgit_url "foo/commit" >trash/tmp' | 10 | test_expect_success 'find commit subject' ' |
8 | run_test 'find tree link' 'grep "<a href=./foo/tree/.>" trash/tmp' | 11 | grep "<div class=.commit-subject.>commit 5<" tmp |
9 | run_test 'find parent link' 'grep -E "<a href=./foo/commit/\?id=.+>" trash/tmp' | ||
10 | |||
11 | run_test 'find commit subject' ' | ||
12 | grep "<div class=.commit-subject.>commit 5<" trash/tmp | ||
13 | ' | 12 | ' |
14 | 13 | ||
15 | run_test 'find commit msg' 'grep "<div class=.commit-msg.></div>" trash/tmp' | 14 | test_expect_success 'find commit msg' 'grep "<div class=.commit-msg.></div>" tmp' |
16 | run_test 'find diffstat' 'grep "<table summary=.diffstat. class=.diffstat.>" trash/tmp' | 15 | test_expect_success 'find diffstat' 'grep "<table summary=.diffstat. class=.diffstat.>" tmp' |
17 | 16 | ||
18 | run_test 'find diff summary' ' | 17 | test_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 | ||
22 | run_test 'get root commit' ' | 21 | test_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 | ||
28 | run_test 'root commit contains diffstat' ' | 27 | test_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 | ||
32 | run_test 'root commit contains diff' ' | 31 | test_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 | ||
37 | tests_done | 36 | test_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 | ||
3 | test_description='Check content on diff page' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests "Check content on diff page" | 6 | test_expect_success 'generate foo/diff' 'cgit_url "foo/diff" >tmp' |
7 | test_expect_success 'find diff header' 'grep "a/file-5 b/file-5" tmp' | ||
8 | test_expect_success 'find blob link' 'grep "<a href=./foo/tree/file-5?id=" tmp' | ||
9 | test_expect_success 'find added file' 'grep "new file mode 100644" tmp' | ||
6 | 10 | ||
7 | run_test 'generate foo/diff' 'cgit_url "foo/diff" >trash/tmp' | 11 | test_expect_success 'find hunk header' ' |
8 | run_test 'find diff header' 'grep "a/file-5 b/file-5" trash/tmp' | 12 | grep "<div class=.hunk.>@@ -0,0 +1 @@</div>" tmp |
9 | run_test 'find blob link' 'grep "<a href=./foo/tree/file-5?id=" trash/tmp' | ||
10 | run_test 'find added file' 'grep "new file mode 100644" trash/tmp' | ||
11 | |||
12 | run_test 'find hunk header' ' | ||
13 | grep "<div class=.hunk.>@@ -0,0 +1 @@</div>" trash/tmp | ||
14 | ' | 13 | ' |
15 | 14 | ||
16 | run_test 'find added line' ' | 15 | test_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 | ||
20 | tests_done | 19 | test_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 | ||
3 | test_description='Verify snapshot' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests "Verify snapshot" | 6 | test_expect_success 'get foo/snapshot/master.tar.gz' ' |
6 | 7 | cgit_url "foo/snapshot/master.tar.gz" >tmp | |
7 | run_test 'get foo/snapshot/master.tar.gz' ' | ||
8 | cgit_url "foo/snapshot/master.tar.gz" >trash/tmp | ||
9 | ' | 8 | ' |
10 | 9 | ||
11 | run_test 'check html headers' ' | 10 | test_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 | ||
19 | run_test 'strip off the header lines' ' | 18 | test_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 | ||
23 | run_test 'verify gzip format' ' | 22 | test_expect_success 'verify gzip format' ' |
24 | gunzip --test trash/master.tar.gz | 23 | gunzip --test master.tar.gz |
25 | ' | 24 | ' |
26 | 25 | ||
27 | run_test 'untar' ' | 26 | test_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 | ||
32 | run_test 'count files' ' | 31 | test_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 | ||
37 | run_test 'verify untarred file-5' ' | 36 | test_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 | ||
42 | run_test 'get foo/snapshot/master.zip' ' | 41 | test_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 | ||
46 | run_test 'check HTML headers (zip)' ' | 45 | test_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 | ||
54 | run_test 'strip off the header lines (zip)' ' | 53 | test_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 | ||
58 | run_test 'verify zip format' ' | 57 | test_expect_success 'verify zip format' ' |
59 | unzip -t trash/master.zip | 58 | unzip -t master.zip |
60 | ' | 59 | ' |
61 | 60 | ||
62 | run_test 'unzip' ' | 61 | test_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 | ||
67 | run_test 'count files (zip)' ' | 66 | test_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 | ||
72 | run_test 'verify unzipped file-5' ' | 71 | test_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 | ||
77 | tests_done | 76 | test_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 | ||
3 | test_description='Check content on patch page' | ||
3 | . ./setup.sh | 4 | . ./setup.sh |
4 | 5 | ||
5 | prepare_tests "Check content on patch page" | 6 | test_expect_success 'generate foo/patch' ' |
6 | 7 | cgit_query "url=foo/patch" >tmp | |
7 | run_test 'generate foo/patch' ' | ||
8 | cgit_query "url=foo/patch" >trash/tmp | ||
9 | ' | 8 | ' |
10 | 9 | ||
11 | run_test 'find `From:` line' ' | 10 | test_expect_success 'find `From:` line' ' |
12 | grep "^From: " trash/tmp | 11 | grep "^From: " tmp |
13 | ' | 12 | ' |
14 | 13 | ||
15 | run_test 'find `Date:` line' ' | 14 | test_expect_success 'find `Date:` line' ' |
16 | grep "^Date: " trash/tmp | 15 | grep "^Date: " tmp |
17 | ' | 16 | ' |
18 | 17 | ||
19 | run_test 'find `Subject:` line' ' | 18 | test_expect_success 'find `Subject:` line' ' |
20 | grep "^Subject: commit 5" trash/tmp | 19 | grep "^Subject: commit 5" tmp |
21 | ' | 20 | ' |
22 | 21 | ||
23 | run_test 'find `cgit` signature' ' | 22 | test_expect_success 'find `cgit` signature' ' |
24 | tail -1 trash/tmp | grep "^cgit" | 23 | tail -1 tmp | grep "^cgit" |
25 | ' | 24 | ' |
26 | 25 | ||
27 | run_test 'find initial commit' ' | 26 | test_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 | ||
31 | run_test 'generate patch for initial commit' ' | 30 | test_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 | ||
35 | run_test 'find `cgit` signature' ' | 34 | test_expect_success 'find `cgit` signature' ' |
36 | tail -1 trash/tmp | grep "^cgit" | 35 | tail -1 tmp | grep "^cgit" |
37 | ' | 36 | ' |
38 | 37 | ||
39 | tests_done | 38 | test_done |