blob: 0e45087e25fea2bb8ff0b108552bc012b96c316f (
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
#!/bin/sh
test_description='Check content on diff page'
. ./setup.sh
test_expect_success 'generate foo/diff' 'cgit_url "foo/diff" >tmp'
test_expect_success 'find diff header' 'grep "a/file-5 b/file-5" tmp'
test_expect_success 'find blob link' 'grep "<a href=./foo/tree/file-5?id=" tmp'
test_expect_success 'find added file' 'grep "new file mode 100644" tmp'
test_expect_success 'find hunk header' '
grep "<div class=.hunk.>@@ -0,0 +1 @@</div>" tmp
'
test_expect_success 'find added line' '
grep "<div class=.add.>+5</div>" tmp
'
test_expect_success 'ref picker: from: select present' '
grep "<select name=.id2." tmp
'
test_expect_success 'ref picker: to: select present' '
grep "<select name=.id." tmp
'
test_expect_success 'ref picker: from: label present' '
grep "from:" tmp
'
test_expect_success 'ref picker: to: label present' '
grep "to:" tmp
'
test_expect_success 'ref pickers live in a separate refs panel' '
grep "<b>diff refs</b>" tmp &&
grep "<b>diff options</b>" tmp
'
test_expect_success 'ref picker: master branch listed' '
grep "master" tmp
'
test_expect_success 'ref picker: auto-submit on change' '
grep "onchange=.this.form.submit()." tmp
'
test_expect_success 'flip link present' '
grep "<a title=.swap from and to. class=.button. href=./foo/diff/?" tmp
'
test_expect_success 'flip link swaps the default refs' '
grep "/foo/diff/?id2=master&idoff=1" tmp
'
test_expect_success 'compare two refs: foo/diff?id=master&id2=HEAD' '
cgit_query "url=foo/diff&id=master&id2=HEAD" >tmp
'
test_expect_success 'diff with explicit refs shows diffstat' '
grep "diffstat" tmp
'
test_expect_success 'diff with oid2 parameter uses it for old ref' '
cgit_query "url=foo/diff&id=master&id2=HEAD" >tmp &&
grep "from:" tmp
'
test_expect_success 'ref picker: to: shows master when id=master' '
cgit_query "url=foo/diff&id=master" >tmp &&
grep "master" tmp
'
test_expect_success 'ref picker: from: empty when no id2' '
cgit_query "url=foo/diff" >tmp &&
grep "<select name=.id2." tmp
'
test_expect_success 'compare initial commit with HEAD' '
root=$(git --git-dir="$PWD/repos/foo/.git" rev-list --max-parents=0 HEAD) &&
cgit_query "url=foo/diff&id=HEAD&id2=$root" >tmp
'
test_expect_success 'diff with HEAD and root shows content' '
grep "diffstat" tmp
'
test_expect_success 'flip link swaps explicit refs' '
cgit_query "url=foo/diff&id=master&id2=HEAD" >tmp &&
grep "/foo/diff/?id=HEAD&id2=master" tmp
'
test_expect_success 'flip link omits id for a diff against a root commit' '
root=$(git --git-dir="$PWD/repos/foo/.git" rev-list --max-parents=0 HEAD) &&
cgit_query "url=foo/diff&id=$root" >tmp &&
grep "href=./foo/diff/?id2=$root." tmp
'
test_expect_success 'offset input: to: present' '
grep "name=.idoff." tmp
'
test_expect_success 'offset input: from: present' '
grep "name=.id2off." tmp
'
test_expect_success 'apply button present' '
grep "value=.apply." tmp
'
test_expect_success 'offset: idoff steps back the to ref' '
cgit_query "url=foo/diff&id=master&idoff=1" >tmp &&
grep "a/file-4 b/file-4" tmp
'
test_expect_success 'offset: id2off steps back the from ref' '
cgit_query "url=foo/diff&id=master&id2=master&id2off=2" >tmp &&
grep "a/file-5 b/file-5" tmp
'
test_expect_success 'offset: filled input and hidden field' '
cgit_query "url=foo/diff&id=master&idoff=1" >tmp &&
grep "title=.N commits back from the selected ref. value=.1.>" tmp &&
grep "type=.hidden. name=.idoff. value=.1./>" tmp
'
test_expect_success 'offset: too large 404s with the stepped rev' '
cgit_query "url=foo/diff&id=master&id2=master&id2off=9" >tmp &&
grep "Bad object name: master~9" tmp
'
test_expect_success 'empty id2 does not 404' '
cgit_query "url=foo/diff&id=master&id2=" >tmp &&
grep "diffstat" tmp &&
! grep "Bad object name" tmp
'
test_expect_success 'file link carries the offsets' '
cgit_query "url=foo/diff&id=master&id2=master&id2off=2" >tmp &&
grep "/foo/diff/file-5?id2=master&id2off=2" tmp
'
test_expect_success 'flip link carries the offsets' '
cgit_query "url=foo/diff&id=master&id2=master&idoff=1&id2off=2" >tmp &&
grep "/foo/diff/?id2=master&idoff=2&id2off=1" tmp
'
test_done
|