blob: 1e095b108982a15e75339b6b9cd3777458b72384 (
plain)
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
|
#!/bin/sh
test_description='Check ci filter written in Lua'
. ./setup.sh
if test $CGIT_HAS_LUA -ne 1
then
skip_all='Skipping Lua ci filter tests: Lua support not compiled in'
test_done
exit
fi
cat >cgitrc.cilua <<EOF
virtual-root=/
cache-root=$PWD/cache
cache-size=0
ci-url=https://ci.example.org/job/\$slug/job/\$ref
ci-filter=lua:$PWD/ci-filter.lua
repo.url=foo
repo.path=$PWD/repos/foo/.git
EOF
# Accepts tags only, and records its arguments.
cat >ci-filter.lua <<EOF
function filter_open(ref, refkind, url)
local log = io.open("$PWD/ci-filter.log", "a")
log:write(ref .. "|" .. refkind .. "|" .. url .. "\n")
log:close()
accepted = (refkind == "tag")
end
function filter_write(buffer)
end
function filter_close()
if accepted then
return 0
end
return 1
end
EOF
git --git-dir="$PWD/repos/foo/.git" tag v1.0 master
cgit_ci()
{
CGIT_CONFIG="$PWD/cgitrc.cilua" QUERY_STRING="url=$1" cgit
}
test_expect_success 'Lua ci filter accepts a tag' '
rm -f ci-filter.log &&
cgit_ci "foo/ci&h=v1.0" >tmp &&
grep "^Location: https://ci.example.org/job/foo/job/v1.0$" tmp &&
echo "v1.0|tag|https://ci.example.org/job/foo/job/v1.0" >expected &&
test_cmp expected ci-filter.log
'
test_expect_success 'Lua ci filter rejects a branch' '
cgit_ci "foo/ci&h=master" >tmp &&
grep "^Status: 404 Not found$" tmp
'
test_expect_success 'Lua ci filter controls the tab' '
cgit_ci "foo/refs&h=v1.0" >tmp &&
grep "href=./foo/ci/?h=v1.0.>ci</a>" tmp &&
cgit_ci "foo/refs&h=master" >tmp &&
! grep ">ci</a>" tmp
'
test_expect_success 'page is still rendered correctly around the filter' '
cgit_ci "foo/refs&h=v1.0" >tmp &&
grep "</html>" tmp &&
! grep "|tag|" tmp
'
test_done
|