blob: 33609d69803f4dde77d9a59d3bd0e60969f0370d (
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
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
|
#!/bin/sh
test_description='Check content on ci page'
. ./setup.sh
# The ci settings are only inherited by repositories which are declared
# after them, which is used below to get a repository with no ci url and
# one with a tag-only ci url.
cat >cgitrc.ci <<EOF
virtual-root=/
cache-root=$PWD/cache
cache-size=0
enable-filter-overrides=1
repo.url=tagonly
repo.path=$PWD/repos/foo/.git
repo.ci-tag-url=https://ci.example.org/tagonly/\$ref
ci-branch-url=https://ci.example.org/job/\$slug/job/\$ref
ci-tag-url=https://ci.example.org/job/\$slug/view/tags/job/\$ref
repo.url=foo
repo.path=$PWD/repos/foo/.git
repo.url=sayauz/web.git
repo.path=$PWD/repos/foo/.git
repo.url=override
repo.path=$PWD/repos/foo/.git
repo.ci-url=https://ci.example.org/override/\$repo/\$\$/\$ref
repo.url=filtered
repo.path=$PWD/repos/foo/.git
repo.ci-filter=exec:$PWD/ci-filter.sh
EOF
# Records its arguments and only accepts tags.
cat >ci-filter.sh <<EOF
#!/bin/sh
printf '%s|%s|%s\n' "\$1" "\$2" "\$3" >>"$PWD/ci-filter.log"
test "\$2" = tag
EOF
chmod +x ci-filter.sh
git --git-dir="$PWD/repos/foo/.git" tag v0.17.3.2 master
cgit_ci()
{
CGIT_CONFIG="$PWD/cgitrc.ci" QUERY_STRING="url=$1" cgit
}
test_expect_success 'redirect to the branch ci url' '
cgit_ci "foo/ci&h=master" >tmp &&
grep "^Status: 302 Found$" tmp &&
grep "^Location: https://ci.example.org/job/foo/job/master$" tmp
'
test_expect_success 'redirect to the tag ci url' '
cgit_ci "foo/ci&h=v0.17.3.2" >tmp &&
grep "^Status: 302 Found$" tmp &&
grep "^Location: https://ci.example.org/job/foo/view/tags/job/v0.17.3.2$" tmp
'
test_expect_success 'redirect to the default branch ci url' '
cgit_ci "foo/ci" >tmp &&
grep "^Location: https://ci.example.org/job/foo/job/master$" tmp
'
test_expect_success '$slug strips ".git" and replaces slashes' '
cgit_ci "sayauz/web.git/ci&h=v0.17.3.2" >tmp &&
grep "^Location: https://ci.example.org/job/sayauz-web/view/tags/job/v0.17.3.2$" tmp
'
test_expect_success 'repo.ci-url overrides and expands $repo and $$' '
cgit_ci "override/ci&h=master" >tmp &&
grep -F "Location: https://ci.example.org/override/override/\$/master" tmp
'
test_expect_success 'repo.ci-tag-url does not apply to branches' '
cgit_ci "tagonly/ci&h=v0.17.3.2" >tmp &&
grep "^Location: https://ci.example.org/tagonly/v0.17.3.2$" tmp &&
cgit_ci "tagonly/ci&h=master" >tmp &&
grep "^Status: 404 Not found$" tmp
'
test_expect_success 'find ci tab' '
cgit_ci "foo/refs&h=master" >tmp &&
grep "href=./foo/ci/.>ci</a>" tmp
'
test_expect_success 'no ci tab without a ci url' '
cgit_url "foo/refs" >tmp &&
! grep ">ci</a>" tmp
'
test_expect_success 'ci filter accepts a tag' '
rm -f ci-filter.log &&
cgit_ci "filtered/ci&h=v0.17.3.2" >tmp &&
grep "^Location: https://ci.example.org/job/filtered/view/tags/job/v0.17.3.2$" tmp &&
echo "v0.17.3.2|tag|https://ci.example.org/job/filtered/view/tags/job/v0.17.3.2" >expected &&
test_cmp expected ci-filter.log
'
test_expect_success 'ci filter rejects a branch' '
rm -f ci-filter.log &&
cgit_ci "filtered/ci&h=master" >tmp &&
grep "^Status: 404 Not found$" tmp &&
echo "master|branch|https://ci.example.org/job/filtered/job/master" >expected &&
test_cmp expected ci-filter.log
'
test_expect_success "ci filter hides the tab and is consulted once" '
rm -f ci-filter.log &&
cgit_ci "filtered/refs&h=master" >tmp &&
! grep ">ci</a>" tmp &&
test_line_count = 1 ci-filter.log &&
cgit_ci "filtered/refs&h=v0.17.3.2" >tmp &&
grep "href=./filtered/ci/?h=v0.17.3.2.>ci</a>" tmp
'
test_expect_success 'ci filter is not consulted without a ci url' '
rm -f ci-filter.log &&
cgit_url "foo/refs" >tmp &&
test_path_is_missing ci-filter.log
'
test_done
|