1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
test_description='Check filtered content'
. ./setup.sh
prefixes="exec"
if test "$CGIT_HAS_LUA" -eq 1
then
prefixes="$prefixes lua"
fi
for prefix in $prefixes
do
test_expect_success "generate filter-$prefix/tree/a%2bb" "
cgit_url 'filter-$prefix/tree/a%2bb' >tmp
"
test_expect_success "check whether the $prefix source filter works" '
grep "<code>a+b HELLO$" tmp
'
test_expect_success "generate filter-$prefix/about/" "
cgit_url 'filter-$prefix/about/' >tmp
"
test_expect_success "check whether the $prefix about filter works" '
grep "<div id='"'"'about'"'"'>a+b /filter-$prefix/tree/ HELLO$" tmp
'
test_expect_success "generate filter-$prefix/commit/" "
cgit_url 'filter-$prefix/commit/' >tmp
"
test_expect_success "check whether the $prefix commit filter works" '
grep "<div class='"'"'commit-subject'"'"'>ADD A+B" tmp
'
test_expect_success "check whether the $prefix email filter works for authors" '
grep "<author@example.com> commit A U THOR <AUTHOR@EXAMPLE.COM>" tmp
'
test_expect_success "check whether the $prefix email filter works for committers" '
grep "<committer@example.com> commit C O MITTER <COMMITTER@EXAMPLE.COM>" tmp
'
test_expect_success "the $prefix source filter output stays inside its cell" "
cgit_url 'filter-$prefix/tree/a%2bb' >tmp &&
tr -d '\n' <tmp >flat.out &&
grep '<code>a+b HELLO</code>' flat.out
"
test_expect_success "the $prefix about filter output stays inside its div" "
cgit_url 'filter-$prefix/about/' >tmp &&
grep \"<div id='about'>a+b /filter-$prefix/tree/ HELLO\" tmp
"
done
test_expect_success 'the blame page goes through the source filter too' '
echo "enable-blame=1" >blamerc &&
sed "s/^cache-size=.*/cache-size=0/" cgitrc >>blamerc &&
CGIT_CONFIG="$PWD/blamerc" QUERY_STRING="url=filter-exec/blame/a%2bb" cgit >tmp &&
grep "<td class=.linenumbers.>" tmp &&
grep "<code>a+b HELLO$" tmp
'
test_expect_success 'the about filter gets the tree url at the readme branch' '
{
echo "virtual-root=/" &&
echo "cache-size=0" &&
echo "readme=:a+b" &&
echo "about-filter=exec:$FILTER_DIRECTORY/dump.sh" &&
echo "root-readme=$PWD/root.txt" &&
echo "repo.url=filtered" &&
echo "repo.path=$PWD/repos/filter/.git"
} >aboutargsrc &&
CGIT_CONFIG="$PWD/aboutargsrc" QUERY_STRING="url=filtered/about/&h=1%2b2" cgit >tmp &&
grep "<div id=.about.>a+b /filtered/tree/ ?h=1%2B2 HELLO" tmp
'
test_expect_success 'the site readme leaves the tree url empty' '
echo site >root.txt &&
CGIT_CONFIG="$PWD/aboutargsrc" QUERY_STRING="p=about" cgit >tmp &&
grep "root.txt SITE" tmp
'
test_expect_success 'only a repository page hands filters its variables' '
write_script env.sh <<-\EOF &&
cat >/dev/null
echo "repo url: $CGIT_REPO_URL."
EOF
sed "s|^about-filter=.*|about-filter=exec:$PWD/env.sh|" aboutargsrc >envrc &&
CGIT_CONFIG="$PWD/envrc" QUERY_STRING="url=filtered/about/" cgit >tmp &&
grep "repo url: filtered\." tmp &&
CGIT_CONFIG="$PWD/envrc" QUERY_STRING="p=about" cgit >tmp &&
grep "repo url: \." tmp
'
test "$CGIT_HAS_LUA" -eq 1 && test_set_prereq CGIT_LUA
test "$CGIT_HAS_LUA" -eq 1 || say 'cgit built without lua, error page check skipped'
test_expect_success CGIT_LUA 'a failing lua filter still renders an error page' '
cat >broken.lua <<-\EOF &&
function filter_open(...) error("boom") end
function filter_write(str) end
function filter_close() return 0 end
EOF
{
echo "cache-size=0" &&
echo "repo.url=foo" &&
echo "repo.path=$PWD/repos/foo/.git" &&
echo "auth-filter=lua:$PWD/broken.lua"
} >brokenrc &&
CGIT_CONFIG="$PWD/brokenrc" QUERY_STRING="url=foo/commit" cgit >tmp 2>err &&
grep "Status: 500" tmp &&
grep "Lua error in" err
'
test_done
|