aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-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
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
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" &&