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
|
test_description='Check the commit trailers table'
CGIT_TEST_NO_CREATE_REPOS=YesPlease
. ./setup.sh
test_expect_success 'create a repository with a trailer-shaped message' '
test_create_repo repos/trailers &&
(
cd repos/trailers &&
echo content >file &&
git add file &&
git commit -m "plain commit" &&
echo more >>file &&
git add file &&
git commit -F - <<-\EOF
Fix the frobnicator
The body keeps its colon: it is not a trailer.
Fixes: 1234567 ("plain commit")
Signed-off-by: A U Thor <author@example.com>
Signed-off-by: C O Mitter <committer@example.com>
(cherry picked from commit deadbeefcafe1234)
Link: https://example.com/?a=1&b=2
EOF
)
'
test_expect_success 'point cgit at it with trailers on and the dump filters' '
cat >cgitrc <<-EOF &&
virtual-root=/
cache-size=0
enable-trailers=1
enable-filter-overrides=1
repo.url=trailers
repo.path=$PWD/repos/trailers/.git
repo.trailer-filter=exec:$FILTER_DIRECTORY/dump.sh
repo.email-filter=exec:$FILTER_DIRECTORY/dump.sh
EOF
cgit_url "trailers/commit/" >tmp
'
test_expect_success 'the body ends where the block begins' '
grep "<div class=.commit-msg.>The body keeps its colon: it is not a trailer.</div>" tmp
'
test_expect_success 'a value reaches the trailer filter with its key and page' '
grep "<tr><th>Fixes</th><td>Fixes commit 1234567 (.PLAIN COMMIT.)</td></tr>" tmp
'
test_expect_success 'a run of one key collapses into one row through the email filter' '
grep "<tr><th>Signed-off-by</th><td><author@example.com> commit A U THOR <AUTHOR@EXAMPLE.COM><br><committer@example.com> commit C O MITTER <COMMITTER@EXAMPLE.COM></td></tr>" tmp
'
test_expect_success 'a line git could not split gets a row of its own' '
grep "<tr><td colspan=.2.>(cherry picked from commit deadbeefcafe1234)</td></tr>" tmp
'
test_expect_success 'the escaped value is what the filter sees' '
grep "<tr><th>Link</th><td>Link commit HTTPS://EXAMPLE.COM/?A=1&B=2</td></tr>" tmp
'
test_expect_success 'a message with no block gets no table' '
plain=$(git -C repos/trailers rev-parse HEAD~1) &&
cgit_url "trailers/commit/&id=$plain" >tmp &&
grep "<div class=.commit-msg.></div>" tmp &&
! grep "commit-trailers" tmp
'
test_expect_success 'with the flag off the message stays whole' '
sed "s/^enable-trailers=1/enable-trailers=0/" cgitrc >cgitrc-off &&
CGIT_CONFIG="$PWD/cgitrc-off" QUERY_STRING="url=trailers/commit/" cgit >tmp &&
! grep "commit-trailers" tmp &&
grep "Signed-off-by: A U Thor" tmp
'
test_expect_success 'the repository flag overrides the global one' '
echo "repo.enable-trailers=0" >>cgitrc &&
cgit_url "trailers/commit/" >tmp &&
! grep "commit-trailers" tmp &&
grep "Signed-off-by: A U Thor" tmp
'
test_done
|