summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2008-02-24 14:27:33 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-02-24 14:27:33 (UTC)
commit19134112bf942c0492f2095b668ea31c1a498f1a (patch) (unidiff)
treeb41e1a3a1a80b82b62fa7c5355526dd4b309cae4
parente0572c39f78b4f88c706a49a60e211302b8e015c (diff)
downloadcgit-19134112bf942c0492f2095b668ea31c1a498f1a.zip
cgit-19134112bf942c0492f2095b668ea31c1a498f1a.tar.gz
cgit-19134112bf942c0492f2095b668ea31c1a498f1a.tar.bz2
Add regression-test for description-less repos
The segfault fixed in commit eacde43d7184452e1fdc90b982b531f1f5239923 was triggered when the html-functions manipulated string literals. One callpatch which could trigger the bug is in ui-repolist.c when repo descriptions are passed to html_ntxt(): if a repo is lacking a description, the literal string "[no description]" is used. This patch changes test/setup.sh such that the first repo has no description, and adds tests for both "[no description]" and "the bar repo" (description of the other repo) to tests/t0101-index.sh, which should be enought to catch regressions in these functions. Noticed-by: Hiroki Hattori <seagull.kamome@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rwxr-xr-xtests/setup.sh4
-rwxr-xr-xtests/t0101-index.sh2
2 files changed, 5 insertions, 1 deletions
diff --git a/tests/setup.sh b/tests/setup.sh
index 51d5a75..9bb1f12 100755
--- a/tests/setup.sh
+++ b/tests/setup.sh
@@ -33,49 +33,51 @@ mkrepo() {
33 done 33 done
34 cd $dir 34 cd $dir
35} 35}
36 36
37setup_repos() 37setup_repos()
38{ 38{
39 rm -rf trash/cache 39 rm -rf trash/cache
40 mkdir -p trash/cache 40 mkdir -p trash/cache
41 mkrepo trash/repos/foo 5 >/dev/null 41 mkrepo trash/repos/foo 5 >/dev/null
42 mkrepo trash/repos/bar 50 >/dev/null 42 mkrepo trash/repos/bar 50 >/dev/null
43 cat >trash/cgitrc <<EOF 43 cat >trash/cgitrc <<EOF
44virtual-root=/ 44virtual-root=/
45cache-root=$PWD/trash/cache 45cache-root=$PWD/trash/cache
46 46
47nocache=0 47nocache=0
48snapshots=tar.gz tar.bz zip 48snapshots=tar.gz tar.bz zip
49enable-log-filecount=1 49enable-log-filecount=1
50enable-log-linecount=1 50enable-log-linecount=1
51summary-log=5 51summary-log=5
52summary-branches=5 52summary-branches=5
53summary-tags=5 53summary-tags=5
54 54
55repo.url=foo 55repo.url=foo
56repo.path=$PWD/trash/repos/foo/.git 56repo.path=$PWD/trash/repos/foo/.git
57repo.desc=the foo repo 57# 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
59# segfault).
58 60
59repo.url=bar 61repo.url=bar
60repo.path=$PWD/trash/repos/bar/.git 62repo.path=$PWD/trash/repos/bar/.git
61repo.desc=the bar repo 63repo.desc=the bar repo
62EOF 64EOF
63} 65}
64 66
65prepare_tests() 67prepare_tests()
66{ 68{
67 setup_repos 69 setup_repos
68 test_count=0 70 test_count=0
69 test_failed=0 71 test_failed=0
70 echo "$@" "($0)" 72 echo "$@" "($0)"
71} 73}
72 74
73tests_done() 75tests_done()
74{ 76{
75 printf "\n" 77 printf "\n"
76 if test $test_failed -gt 0 78 if test $test_failed -gt 0
77 then 79 then
78 printf "[%s of %s tests failed]\n" $test_failed $test_count 80 printf "[%s of %s tests failed]\n" $test_failed $test_count
79 false 81 false
80 fi 82 fi
81} 83}
diff --git a/tests/t0101-index.sh b/tests/t0101-index.sh
index 12ed00c..59edc59 100755
--- a/tests/t0101-index.sh
+++ b/tests/t0101-index.sh
@@ -1,13 +1,15 @@
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 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'
10run_test 'no tree-link' 'grep -ve "foo/tree" trash/tmp' 12run_test 'no tree-link' 'grep -ve "foo/tree" trash/tmp'
11run_test 'no log-link' 'grep -ve "foo/log" trash/tmp' 13run_test 'no log-link' 'grep -ve "foo/log" trash/tmp'
12 14
13tests_done 15tests_done