summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Makefile2
m---------git0
-rw-r--r--html.c20
-rwxr-xr-xtests/setup.sh18
-rwxr-xr-xtests/t0010-validate-html.sh5
-rwxr-xr-xtests/t0101-index.sh6
-rwxr-xr-xtests/t0102-summary.sh6
-rwxr-xr-xtests/t0108-patch.sh37
-rw-r--r--ui-patch.c6
9 files changed, 72 insertions, 28 deletions
diff --git a/Makefile b/Makefile
index 355186e..931c60e 100644
--- a/Makefile
+++ b/Makefile
@@ -5,5 +5,5 @@ CGIT_CONFIG = /etc/cgitrc
5CACHE_ROOT = /var/cache/cgit 5CACHE_ROOT = /var/cache/cgit
6SHA1_HEADER = <openssl/sha.h> 6SHA1_HEADER = <openssl/sha.h>
7GIT_VER = 1.5.4.1 7GIT_VER = 1.5.5.rc1
8GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2 8GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2
9 9
diff --git a/git b/git
Subproject 527270689c364bea9b0630df9bae5e09c2071c1 Subproject 803d5158123346229d71de53818920efbc88ca0
diff --git a/html.c b/html.c
index 98ffaf9..937b5e7 100644
--- a/html.c
+++ b/html.c
@@ -57,7 +57,5 @@ void html_txt(char *txt)
57 int c = *t; 57 int c = *t;
58 if (c=='<' || c=='>' || c=='&') { 58 if (c=='<' || c=='>' || c=='&') {
59 *t = '\0'; 59 write(htmlfd, txt, t - txt);
60 html(txt);
61 *t = c;
62 if (c=='>') 60 if (c=='>')
63 html("&gt;"); 61 html("&gt;");
@@ -80,7 +78,5 @@ void html_ntxt(int len, char *txt)
80 int c = *t; 78 int c = *t;
81 if (c=='<' || c=='>' || c=='&') { 79 if (c=='<' || c=='>' || c=='&') {
82 *t = '\0'; 80 write(htmlfd, txt, t - txt);
83 html(txt);
84 *t = c;
85 if (c=='>') 81 if (c=='>')
86 html("&gt;"); 82 html("&gt;");
@@ -93,10 +89,6 @@ void html_ntxt(int len, char *txt)
93 t++; 89 t++;
94 } 90 }
95 if (t!=txt) { 91 if (t!=txt)
96 char c = *t; 92 write(htmlfd, txt, t - txt);
97 *t = '\0';
98 html(txt);
99 *t = c;
100 }
101 if (len<0) 93 if (len<0)
102 html("..."); 94 html("...");
@@ -109,7 +101,5 @@ void html_attr(char *txt)
109 int c = *t; 101 int c = *t;
110 if (c=='<' || c=='>' || c=='\'') { 102 if (c=='<' || c=='>' || c=='\'') {
111 *t = '\0'; 103 write(htmlfd, txt, t - txt);
112 html(txt);
113 *t = c;
114 if (c=='>') 104 if (c=='>')
115 html("&gt;"); 105 html("&gt;");
diff --git a/tests/setup.sh b/tests/setup.sh
index 51d5a75..66bf406 100755
--- a/tests/setup.sh
+++ b/tests/setup.sh
@@ -55,5 +55,7 @@ summary-tags=5
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
@@ -66,6 +68,8 @@ prepare_tests()
66{ 68{
67 setup_repos 69 setup_repos
70 rm -f test-output.log 2>/dev/null
68 test_count=0 71 test_count=0
69 test_failed=0 72 test_failed=0
73 echo "[$0]" "$@" >test-output.log
70 echo "$@" "($0)" 74 echo "$@" "($0)"
71} 75}
@@ -76,5 +80,6 @@ tests_done()
76 if test $test_failed -gt 0 80 if test $test_failed -gt 0
77 then 81 then
78 printf "[%s of %s tests failed]\n" $test_failed $test_count 82 printf "test: *** %s failure(s), logfile=%s\n" \
83 $test_failed "$(pwd)/test-output.log"
79 false 84 false
80 fi 85 fi
@@ -86,12 +91,15 @@ run_test()
86 script=$2 91 script=$2
87 ((test_count++)) 92 ((test_count++))
88 eval "$2" >test-output.log 93 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
95 eval "$2" >>test-output.log 2>>test-output.log
89 res=$? 96 res=$?
97 printf "test %d: exitcode=%d\n" $test_count $res >>test-output.log
90 if test $res = 0 98 if test $res = 0
91 then 99 then
92 printf " %s: ok - %s\n" $test_count "$desc" 100 printf " %2d) %-60s [ok]\n" $test_count "$desc"
93 else 101 else
94 ((test_failed++)) 102 ((test_failed++))
95 printf " %s: fail - %s\n" $test_count "$desc" 103 printf " %2d) %-60s [failed]\n" $test_count "$desc"
96 fi 104 fi
97} 105}
diff --git a/tests/t0010-validate-html.sh b/tests/t0010-validate-html.sh
index 907a415..94aa52b 100755
--- a/tests/t0010-validate-html.sh
+++ b/tests/t0010-validate-html.sh
@@ -8,7 +8,10 @@ test_url()
8 tidy_opt="-eq" 8 tidy_opt="-eq"
9 test -z "$NO_TIDY_WARNINGS" || tidy_opt+=" --show-warnings no" 9 test -z "$NO_TIDY_WARNINGS" || tidy_opt+=" --show-warnings no"
10 cgit_url "$1" | sed -e "1,4d" >trash/tidy-$test_count 10 cgit_url "$1" >trash/tidy-$test_count || return
11 sed -ie "1,4d" trash/tidy-$test_count || return
11 tidy $tidy_opt trash/tidy-$test_count 12 tidy $tidy_opt trash/tidy-$test_count
12 rc=$? 13 rc=$?
14
15 # tidy returns with exitcode 1 on warnings, 2 on error
13 if test $rc = 2 16 if test $rc = 2
14 then 17 then
diff --git a/tests/t0101-index.sh b/tests/t0101-index.sh
index 12ed00c..445af6a 100755
--- a/tests/t0101-index.sh
+++ b/tests/t0101-index.sh
@@ -7,7 +7,9 @@ prepare_tests "Check content on index page"
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'
10run_test 'no tree-link' 'grep -ve "foo/tree" trash/tmp' 11run_test 'find bar description' 'grep -e "the bar repo" trash/tmp'
11run_test 'no log-link' 'grep -ve "foo/log" trash/tmp' 12run_test 'no tree-link' '! grep -e "foo/tree" trash/tmp'
13run_test 'no log-link' '! grep -e "foo/log" trash/tmp'
12 14
13tests_done 15tests_done
diff --git a/tests/t0102-summary.sh b/tests/t0102-summary.sh
index 7edd675..f0b0d9a 100755
--- a/tests/t0102-summary.sh
+++ b/tests/t0102-summary.sh
@@ -9,12 +9,12 @@ run_test 'find commit 1' 'grep -e "commit 1" trash/tmp'
9run_test 'find commit 5' 'grep -e "commit 5" trash/tmp' 9run_test 'find commit 5' 'grep -e "commit 5" trash/tmp'
10run_test 'find branch master' 'grep -e "master" trash/tmp' 10run_test 'find branch master' 'grep -e "master" trash/tmp'
11run_test 'no tags' 'grep -ve "tags" trash/tmp' 11run_test 'no tags' '! grep -e "tags" trash/tmp'
12 12
13run_test 'generate bar summary' 'cgit_url "bar" >trash/tmp' 13run_test 'generate bar summary' 'cgit_url "bar" >trash/tmp'
14run_test 'no commit 45' 'grep -ve "commit 45" trash/tmp' 14run_test 'no commit 45' '! grep -e "commit 45" trash/tmp'
15run_test 'find commit 46' 'grep -e "commit 46" trash/tmp' 15run_test 'find commit 46' 'grep -e "commit 46" trash/tmp'
16run_test 'find commit 50' 'grep -e "commit 50" trash/tmp' 16run_test 'find commit 50' 'grep -e "commit 50" trash/tmp'
17run_test 'find branch master' 'grep -e "master" trash/tmp' 17run_test 'find branch master' 'grep -e "master" trash/tmp'
18run_test 'no tags' 'grep -ve "tags" trash/tmp' 18run_test 'no tags' '! grep -e "tags" trash/tmp'
19 19
20tests_done 20tests_done
diff --git a/tests/t0108-patch.sh b/tests/t0108-patch.sh
new file mode 100755
index 0000000..33351d6
--- a/dev/null
+++ b/tests/t0108-patch.sh
@@ -0,0 +1,37 @@
1#!/bin/sh
2
3. ./setup.sh
4
5prepare_tests "Check content on patch page"
6
7run_test 'generate foo/patch' '
8 cgit_query "url=foo/patch" >trash/tmp
9'
10
11run_test 'find `From:` line' '
12 grep -e "^From: " trash/tmp
13'
14
15run_test 'find `Date:` line' '
16 grep -e "^Date: " trash/tmp
17'
18
19run_test 'find `Subject:` line' '
20 grep -e "^Subject: commit 5" trash/tmp
21'
22
23run_test 'find `cgit` signature' '
24 tail -1 trash/tmp | grep -e "^cgit"
25'
26
27run_test 'find initial commit' '
28 root=$(git --git-dir=$PWD/trash/repos/foo/.git rev-list HEAD | tail -1)
29'
30
31run_test 'generate patch for initial commit' '
32 cgit_query "url=foo/patch&id=$root" >trash/tmp
33'
34
35run_test 'find `cgit` signature' '
36 tail -1 trash/tmp | grep -e "^cgit"
37'
diff --git a/ui-patch.c b/ui-patch.c
index 36bfae4..c1c4ce3 100644
--- a/ui-patch.c
+++ b/ui-patch.c
@@ -91,5 +91,9 @@ void cgit_print_patch(char *hex)
91 } 91 }
92 info = cgit_parse_commit(commit); 92 info = cgit_parse_commit(commit);
93 hashcpy(old_sha1, commit->parents->item->object.sha1); 93
94 if (commit->parents && commit->parents->item)
95 hashcpy(old_sha1, commit->parents->item->object.sha1);
96 else
97 hashclr(old_sha1);
94 98
95 patchname = fmt("%s.patch", sha1_to_hex(sha1)); 99 patchname = fmt("%s.patch", sha1_to_hex(sha1));