CGIT_CONFIG = /etc/cgitrc
CACHE_ROOT = /var/cache/cgit
SHA1_HEADER = <openssl/sha.h>
-GIT_VER = 1.5.4.1
+GIT_VER = 1.5.5.rc1
GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2
#
-Subproject commit 527270689c364bea9b0630df9bae5e09c2071c1e
+Subproject commit 803d5158123346229d71de53818920efbc88ca0f
while(t && *t){
int c = *t;
if (c=='<' || c=='>' || c=='&') {
- *t = '\0';
- html(txt);
- *t = c;
+ write(htmlfd, txt, t - txt);
if (c=='>')
html(">");
else if (c=='<')
while(t && *t && len--){
int c = *t;
if (c=='<' || c=='>' || c=='&') {
- *t = '\0';
- html(txt);
- *t = c;
+ write(htmlfd, txt, t - txt);
if (c=='>')
html(">");
else if (c=='<')
}
t++;
}
- if (t!=txt) {
- char c = *t;
- *t = '\0';
- html(txt);
- *t = c;
- }
+ if (t!=txt)
+ write(htmlfd, txt, t - txt);
if (len<0)
html("...");
}
while(t && *t){
int c = *t;
if (c=='<' || c=='>' || c=='\'') {
- *t = '\0';
- html(txt);
- *t = c;
+ write(htmlfd, txt, t - txt);
if (c=='>')
html(">");
else if (c=='<')
repo.url=foo
repo.path=$PWD/trash/repos/foo/.git
-repo.desc=the foo repo
+# Do not specify a description for this repo, as it then will be assigned
+# the constant value "[no description]" (which actually used to cause a
+# segfault).
repo.url=bar
repo.path=$PWD/trash/repos/bar/.git
prepare_tests()
{
setup_repos
+ rm -f test-output.log 2>/dev/null
test_count=0
test_failed=0
+ echo "[$0]" "$@" >test-output.log
echo "$@" "($0)"
}
printf "\n"
if test $test_failed -gt 0
then
- printf "[%s of %s tests failed]\n" $test_failed $test_count
+ printf "test: *** %s failure(s), logfile=%s\n" \
+ $test_failed "$(pwd)/test-output.log"
false
fi
}
desc=$1
script=$2
((test_count++))
- eval "$2" >test-output.log
+ printf "\ntest %d: name='%s'\n" $test_count "$desc" >>test-output.log
+ printf "test %d: eval='%s'\n" $test_count "$2" >>test-output.log
+ eval "$2" >>test-output.log 2>>test-output.log
res=$?
+ printf "test %d: exitcode=%d\n" $test_count $res >>test-output.log
if test $res = 0
then
- printf " %s: ok - %s\n" $test_count "$desc"
+ printf " %2d) %-60s [ok]\n" $test_count "$desc"
else
((test_failed++))
- printf " %s: fail - %s\n" $test_count "$desc"
+ printf " %2d) %-60s [failed]\n" $test_count "$desc"
fi
}
{
tidy_opt="-eq"
test -z "$NO_TIDY_WARNINGS" || tidy_opt+=" --show-warnings no"
- cgit_url "$1" | sed -e "1,4d" >trash/tidy-$test_count
+ cgit_url "$1" >trash/tidy-$test_count || return
+ sed -ie "1,4d" trash/tidy-$test_count || return
tidy $tidy_opt trash/tidy-$test_count
rc=$?
+
+ # tidy returns with exitcode 1 on warnings, 2 on error
if test $rc = 2
then
false
run_test 'generate index page' 'cgit_url "" >trash/tmp'
run_test 'find foo repo' 'grep -e "foo" trash/tmp'
+run_test 'find foo description' 'grep -e "\[no description\]" trash/tmp'
run_test 'find bar repo' 'grep -e "bar" trash/tmp'
-run_test 'no tree-link' 'grep -ve "foo/tree" trash/tmp'
-run_test 'no log-link' 'grep -ve "foo/log" trash/tmp'
+run_test 'find bar description' 'grep -e "the bar repo" trash/tmp'
+run_test 'no tree-link' '! grep -e "foo/tree" trash/tmp'
+run_test 'no log-link' '! grep -e "foo/log" trash/tmp'
tests_done
run_test 'find commit 1' 'grep -e "commit 1" trash/tmp'
run_test 'find commit 5' 'grep -e "commit 5" trash/tmp'
run_test 'find branch master' 'grep -e "master" trash/tmp'
-run_test 'no tags' 'grep -ve "tags" trash/tmp'
+run_test 'no tags' '! grep -e "tags" trash/tmp'
run_test 'generate bar summary' 'cgit_url "bar" >trash/tmp'
-run_test 'no commit 45' 'grep -ve "commit 45" trash/tmp'
+run_test 'no commit 45' '! grep -e "commit 45" trash/tmp'
run_test 'find commit 46' 'grep -e "commit 46" trash/tmp'
run_test 'find commit 50' 'grep -e "commit 50" trash/tmp'
run_test 'find branch master' 'grep -e "master" trash/tmp'
-run_test 'no tags' 'grep -ve "tags" trash/tmp'
+run_test 'no tags' '! grep -e "tags" trash/tmp'
tests_done
--- /dev/null
+#!/bin/sh
+
+. ./setup.sh
+
+prepare_tests "Check content on patch page"
+
+run_test 'generate foo/patch' '
+ cgit_query "url=foo/patch" >trash/tmp
+'
+
+run_test 'find `From:` line' '
+ grep -e "^From: " trash/tmp
+'
+
+run_test 'find `Date:` line' '
+ grep -e "^Date: " trash/tmp
+'
+
+run_test 'find `Subject:` line' '
+ grep -e "^Subject: commit 5" trash/tmp
+'
+
+run_test 'find `cgit` signature' '
+ tail -1 trash/tmp | grep -e "^cgit"
+'
+
+run_test 'find initial commit' '
+ root=$(git --git-dir=$PWD/trash/repos/foo/.git rev-list HEAD | tail -1)
+'
+
+run_test 'generate patch for initial commit' '
+ cgit_query "url=foo/patch&id=$root" >trash/tmp
+'
+
+run_test 'find `cgit` signature' '
+ tail -1 trash/tmp | grep -e "^cgit"
+'
return;
}
info = cgit_parse_commit(commit);
- hashcpy(old_sha1, commit->parents->item->object.sha1);
+
+ if (commit->parents && commit->parents->item)
+ hashcpy(old_sha1, commit->parents->item->object.sha1);
+ else
+ hashclr(old_sha1);
patchname = fmt("%s.patch", sha1_to_hex(sha1));
ctx.page.mimetype = "text/plain";