summaryrefslogtreecommitdiffabout
path: root/tests
authorLars Hjemli <hjemli@gmail.com>2008-10-05 10:52:25 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-10-05 10:52:25 (UTC)
commitb575115d9d93e45cdbcd5d066cc445d34639ae6a (patch) (unidiff)
treec4f70519f406bb8490ae8d12060a743d4c62fb86 /tests
parenta36a0d9dec8a3ba79501d2526d648e44306f0fdd (diff)
downloadcgit-b575115d9d93e45cdbcd5d066cc445d34639ae6a.zip
cgit-b575115d9d93e45cdbcd5d066cc445d34639ae6a.tar.gz
cgit-b575115d9d93e45cdbcd5d066cc445d34639ae6a.tar.bz2
ui-shared.c: use html_url_arg()
The link-generating functions are updated to use the new html_url_arg function, thereby fixing links to strange repos, branches and files. Also, the test-suite is updated to verify some cases of strange urls. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'tests') (more/less context) (ignore whitespace changes)
-rwxr-xr-xtests/setup.sh13
-rwxr-xr-xtests/t0101-index.sh2
-rwxr-xr-xtests/t0104-tree.sh12
3 files changed, 26 insertions, 1 deletions
diff --git a/tests/setup.sh b/tests/setup.sh
index e37306e..1457dd5 100755
--- a/tests/setup.sh
+++ b/tests/setup.sh
@@ -1,116 +1,127 @@
1# This file should be sourced by all test-scripts 1# This file should be sourced by all test-scripts
2# 2#
3# Main functions: 3# Main functions:
4# prepare_tests(description) - setup for testing, i.e. create repos+config 4# prepare_tests(description) - setup for testing, i.e. create repos+config
5# run_test(description, script) - run one test, i.e. eval script 5# run_test(description, script) - run one test, i.e. eval script
6# 6#
7# Helper functions 7# Helper functions
8# cgit_query(querystring) - call cgit with the specified querystring 8# cgit_query(querystring) - call cgit with the specified querystring
9# cgit_url(url) - call cgit with the specified virtual url 9# cgit_url(url) - call cgit with the specified virtual url
10# 10#
11# Example script: 11# Example script:
12# 12#
13# . setup.sh 13# . setup.sh
14# prepare_tests "html validation" 14# prepare_tests "html validation"
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 18
19mkrepo() { 19mkrepo() {
20 name=$1 20 name=$1
21 count=$2 21 count=$2
22 dir=$PWD 22 dir=$PWD
23 test -d $name && return 23 test -d $name && return
24 printf "Creating testrepo %s\n" $name 24 printf "Creating testrepo %s\n" $name
25 mkdir -p $name 25 mkdir -p $name
26 cd $name 26 cd $name
27 git init 27 git init
28 for ((n=1; n<=count; n++)) 28 for ((n=1; n<=count; n++))
29 do 29 do
30 echo $n >file-$n 30 echo $n >file-$n
31 git add file-$n 31 git add file-$n
32 git commit -m "commit $n" 32 git commit -m "commit $n"
33 done 33 done
34 if test "$3" = "testplus"
35 then
36 echo "hello" >a+b
37 git add a+b
38 git commit -m "add a+b"
39 git branch "1+2"
40 fi
34 cd $dir 41 cd $dir
35} 42}
36 43
37setup_repos() 44setup_repos()
38{ 45{
39 rm -rf trash/cache 46 rm -rf trash/cache
40 mkdir -p trash/cache 47 mkdir -p trash/cache
41 mkrepo trash/repos/foo 5 >/dev/null 48 mkrepo trash/repos/foo 5 >/dev/null
42 mkrepo trash/repos/bar 50 >/dev/null 49 mkrepo trash/repos/bar 50 >/dev/null
50 mkrepo trash/repos/foo+bar 10 testplus >/dev/null
43 cat >trash/cgitrc <<EOF 51 cat >trash/cgitrc <<EOF
44virtual-root=/ 52virtual-root=/
45cache-root=$PWD/trash/cache 53cache-root=$PWD/trash/cache
46 54
47cache-size=1021 55cache-size=1021
48snapshots=tar.gz tar.bz zip 56snapshots=tar.gz tar.bz zip
49enable-log-filecount=1 57enable-log-filecount=1
50enable-log-linecount=1 58enable-log-linecount=1
51summary-log=5 59summary-log=5
52summary-branches=5 60summary-branches=5
53summary-tags=5 61summary-tags=5
54 62
55repo.url=foo 63repo.url=foo
56repo.path=$PWD/trash/repos/foo/.git 64repo.path=$PWD/trash/repos/foo/.git
57# Do not specify a description for this repo, as it then will be assigned 65# Do not specify a description for this repo, as it then will be assigned
58# the constant value "[no description]" (which actually used to cause a 66# the constant value "[no description]" (which actually used to cause a
59# segfault). 67# segfault).
60 68
61repo.url=bar 69repo.url=bar
62repo.path=$PWD/trash/repos/bar/.git 70repo.path=$PWD/trash/repos/bar/.git
63repo.desc=the bar repo 71repo.desc=the bar repo
72
73repo.url=foo+bar
74repo.path=$PWD/trash/repos/foo+bar/.git
75repo.desc=the foo+bar repo
64EOF 76EOF
65} 77}
66 78
67prepare_tests() 79prepare_tests()
68{ 80{
69 setup_repos 81 setup_repos
70 rm -f test-output.log 2>/dev/null 82 rm -f test-output.log 2>/dev/null
71 test_count=0 83 test_count=0
72 test_failed=0 84 test_failed=0
73 echo "[$0]" "$@" >test-output.log 85 echo "[$0]" "$@" >test-output.log
74 echo "$@" "($0)" 86 echo "$@" "($0)"
75} 87}
76 88
77tests_done() 89tests_done()
78{ 90{
79 printf "\n" 91 printf "\n"
80 if test $test_failed -gt 0 92 if test $test_failed -gt 0
81 then 93 then
82 printf "test: *** %s failure(s), logfile=%s\n" \ 94 printf "test: *** %s failure(s), logfile=%s\n" \
83 $test_failed "$(pwd)/test-output.log" 95 $test_failed "$(pwd)/test-output.log"
84 false 96 false
85 fi 97 fi
86} 98}
87 99
88run_test() 100run_test()
89{ 101{
90 desc=$1 102 desc=$1
91 script=$2 103 script=$2
92 ((test_count++)) 104 ((test_count++))
93 printf "\ntest %d: name='%s'\n" $test_count "$desc" >>test-output.log 105 printf "\ntest %d: name='%s'\n" $test_count "$desc" >>test-output.log
94 printf "test %d: eval='%s'\n" $test_count "$2" >>test-output.log 106 printf "test %d: eval='%s'\n" $test_count "$2" >>test-output.log
95 eval "$2" >>test-output.log 2>>test-output.log 107 eval "$2" >>test-output.log 2>>test-output.log
96 res=$? 108 res=$?
97 printf "test %d: exitcode=%d\n" $test_count $res >>test-output.log 109 printf "test %d: exitcode=%d\n" $test_count $res >>test-output.log
98 if test $res = 0 110 if test $res = 0
99 then 111 then
100 printf " %2d) %-60s [ok]\n" $test_count "$desc" 112 printf " %2d) %-60s [ok]\n" $test_count "$desc"
101 else 113 else
102 ((test_failed++)) 114 ((test_failed++))
103 printf " %2d) %-60s [failed]\n" $test_count "$desc" 115 printf " %2d) %-60s [failed]\n" $test_count "$desc"
104 fi 116 fi
105} 117}
106 118
107cgit_query() 119cgit_query()
108{ 120{
109 CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="$1" "$PWD/../cgit" 121 CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="$1" "$PWD/../cgit"
110} 122}
111 123
112cgit_url() 124cgit_url()
113{ 125{
114 CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit" 126 CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit"
115} 127}
116
diff --git a/tests/t0101-index.sh b/tests/t0101-index.sh
index 445af6a..07e39f9 100755
--- a/tests/t0101-index.sh
+++ b/tests/t0101-index.sh
@@ -1,15 +1,17 @@
1#!/bin/sh 1#!/bin/sh
2 2
3. ./setup.sh 3. ./setup.sh
4 4
5prepare_tests "Check content on index page" 5prepare_tests "Check content on index page"
6 6
7run_test 'generate index page' 'cgit_url "" >trash/tmp' 7run_test 'generate index page' 'cgit_url "" >trash/tmp'
8run_test 'find foo repo' 'grep -e "foo" trash/tmp' 8run_test 'find foo repo' 'grep -e "foo" trash/tmp'
9run_test 'find foo description' 'grep -e "\[no description\]" trash/tmp' 9run_test 'find foo description' 'grep -e "\[no description\]" trash/tmp'
10run_test 'find bar repo' 'grep -e "bar" trash/tmp' 10run_test 'find bar repo' 'grep -e "bar" trash/tmp'
11run_test 'find bar description' 'grep -e "the bar repo" trash/tmp' 11run_test 'find bar description' 'grep -e "the bar repo" trash/tmp'
12run_test 'find foo+bar repo' 'grep -e ">foo+bar<" trash/tmp'
13run_test 'verify foo+bar link' 'grep -e "/foo+bar/" trash/tmp'
12run_test 'no tree-link' '! grep -e "foo/tree" trash/tmp' 14run_test 'no tree-link' '! grep -e "foo/tree" trash/tmp'
13run_test 'no log-link' '! grep -e "foo/log" trash/tmp' 15run_test 'no log-link' '! grep -e "foo/log" trash/tmp'
14 16
15tests_done 17tests_done
diff --git a/tests/t0104-tree.sh b/tests/t0104-tree.sh
index 2516c72..0d62cc8 100755
--- a/tests/t0104-tree.sh
+++ b/tests/t0104-tree.sh
@@ -1,21 +1,33 @@
1#!/bin/sh 1#!/bin/sh
2 2
3. ./setup.sh 3. ./setup.sh
4 4
5prepare_tests "Check content on tree page" 5prepare_tests "Check content on tree page"
6 6
7run_test 'generate bar/tree' 'cgit_url "bar/tree" >trash/tmp' 7run_test 'generate bar/tree' 'cgit_url "bar/tree" >trash/tmp'
8run_test 'find file-1' 'grep -e "file-1" trash/tmp' 8run_test 'find file-1' 'grep -e "file-1" trash/tmp'
9run_test 'find file-50' 'grep -e "file-50" trash/tmp' 9run_test 'find file-50' 'grep -e "file-50" trash/tmp'
10 10
11run_test 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >trash/tmp' 11run_test 'generate bar/tree/file-50' 'cgit_url "bar/tree/file-50" >trash/tmp'
12 12
13run_test 'find line 1' ' 13run_test 'find line 1' '
14 grep -e "<a id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp 14 grep -e "<a id=.n1. name=.n1. href=.#n1.>1</a>" trash/tmp
15' 15'
16 16
17run_test 'no line 2' ' 17run_test 'no line 2' '
18 grep -e "<a id=.n2. name=.n2. href=.#n2.>2</a>" trash/tmp 18 grep -e "<a id=.n2. name=.n2. href=.#n2.>2</a>" trash/tmp
19' 19'
20 20
21run_test 'generate foo+bar/tree' 'cgit_url "foo%2bbar/tree" >trash/tmp'
22
23run_test 'verify a+b link' '
24 grep -e "/foo+bar/tree/a+b" trash/tmp
25'
26
27run_test 'generate foo+bar/tree?h=1+2' 'cgit_url "foo%2bbar/tree&h=1%2b2" >trash/tmp'
28
29run_test 'verify a+b?h=1+2 link' '
30 grep -e "/foo+bar/tree/a+b?h=1%2b2" trash/tmp
31'
32
21tests_done 33tests_done