]>
Commit | Line | Data |
---|---|---|
e39e0d37 MR |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2009 Mark Rada | |
4 | # | |
5 | ||
6 | test_description='gitweb as standalone script (http status tests). | |
7 | ||
8 | This test runs gitweb (git web interface) as a CGI script from the | |
9 | commandline, and checks that it returns the expected HTTP status | |
10 | code and message.' | |
11 | ||
12 | ||
13 | . ./gitweb-lib.sh | |
14 | ||
2a8a4490 RJ |
15 | # |
16 | # Gitweb only provides the functionality tested by the 'modification times' | |
17 | # tests if it can access a date parser from one of these modules: | |
18 | # | |
19 | perl -MHTTP::Date -e 0 >/dev/null 2>&1 && test_set_prereq DATE_PARSER | |
20 | perl -MTime::ParseDate -e 0 >/dev/null 2>&1 && test_set_prereq DATE_PARSER | |
21 | ||
e39e0d37 MR |
22 | # ---------------------------------------------------------------------- |
23 | # snapshot settings | |
24 | ||
4a45f7dd | 25 | test_expect_success 'setup' " |
1b3187ba | 26 | test_commit 'SnapshotTests' 'i can has snapshot' |
4a45f7dd BG |
27 | " |
28 | ||
e39e0d37 MR |
29 | |
30 | cat >>gitweb_config.perl <<\EOF | |
31 | $feature{'snapshot'}{'override'} = 0; | |
32 | EOF | |
33 | ||
34 | test_expect_success \ | |
35 | 'snapshots: tgz only default format enabled' \ | |
36 | 'gitweb_run "p=.git;a=snapshot;h=HEAD;sf=tgz" && | |
37 | grep "Status: 200 OK" gitweb.output && | |
38 | gitweb_run "p=.git;a=snapshot;h=HEAD;sf=tbz2" && | |
39 | grep "403 - Unsupported snapshot format" gitweb.output && | |
40 | gitweb_run "p=.git;a=snapshot;h=HEAD;sf=txz" && | |
41 | grep "403 - Snapshot format not allowed" gitweb.output && | |
42 | gitweb_run "p=.git;a=snapshot;h=HEAD;sf=zip" && | |
43 | grep "403 - Unsupported snapshot format" gitweb.output' | |
e39e0d37 MR |
44 | |
45 | ||
46 | cat >>gitweb_config.perl <<\EOF | |
47 | $feature{'snapshot'}{'default'} = ['tgz','tbz2','txz','zip']; | |
48 | EOF | |
49 | ||
50 | test_expect_success \ | |
51 | 'snapshots: all enabled in default, use default disabled value' \ | |
52 | 'gitweb_run "p=.git;a=snapshot;h=HEAD;sf=tgz" && | |
53 | grep "Status: 200 OK" gitweb.output && | |
54 | gitweb_run "p=.git;a=snapshot;h=HEAD;sf=tbz2" && | |
55 | grep "Status: 200 OK" gitweb.output && | |
56 | gitweb_run "p=.git;a=snapshot;h=HEAD;sf=txz" && | |
57 | grep "403 - Snapshot format not allowed" gitweb.output && | |
58 | gitweb_run "p=.git;a=snapshot;h=HEAD;sf=zip" && | |
59 | grep "Status: 200 OK" gitweb.output' | |
e39e0d37 MR |
60 | |
61 | ||
62 | cat >>gitweb_config.perl <<\EOF | |
63 | $known_snapshot_formats{'zip'}{'disabled'} = 1; | |
64 | EOF | |
65 | ||
66 | test_expect_success \ | |
67 | 'snapshots: zip explicitly disabled' \ | |
68 | 'gitweb_run "p=.git;a=snapshot;h=HEAD;sf=zip" && | |
69 | grep "403 - Snapshot format not allowed" gitweb.output' | |
70 | test_debug 'cat gitweb.output' | |
71 | ||
72 | ||
73 | cat >>gitweb_config.perl <<\EOF | |
74 | $known_snapshot_formats{'tgz'}{'disabled'} = 0; | |
75 | EOF | |
76 | ||
77 | test_expect_success \ | |
78 | 'snapshots: tgz explicitly enabled' \ | |
79 | 'gitweb_run "p=.git;a=snapshot;h=HEAD;sf=tgz" && | |
80 | grep "Status: 200 OK" gitweb.output' | |
745a2db4 | 81 | test_debug 'cat gitweb.headers' |
e39e0d37 MR |
82 | |
83 | ||
fdb0c36e MR |
84 | # ---------------------------------------------------------------------- |
85 | # snapshot hash ids | |
86 | ||
87 | test_expect_success 'snapshots: good tree-ish id' ' | |
88 | gitweb_run "p=.git;a=snapshot;h=master;sf=tgz" && | |
89 | grep "Status: 200 OK" gitweb.output | |
90 | ' | |
745a2db4 | 91 | test_debug 'cat gitweb.headers' |
fdb0c36e MR |
92 | |
93 | test_expect_success 'snapshots: bad tree-ish id' ' | |
94 | gitweb_run "p=.git;a=snapshot;h=frizzumFrazzum;sf=tgz" && | |
95 | grep "404 - Object does not exist" gitweb.output | |
96 | ' | |
97 | test_debug 'cat gitweb.output' | |
98 | ||
99 | test_expect_success 'snapshots: bad tree-ish id (tagged object)' ' | |
100 | echo object > tag-object && | |
101 | git add tag-object && | |
b7d565ea | 102 | test_tick && git commit -m "Object to be tagged" && |
fdb0c36e MR |
103 | git tag tagged-object `git hash-object tag-object` && |
104 | gitweb_run "p=.git;a=snapshot;h=tagged-object;sf=tgz" && | |
105 | grep "400 - Object is not a tree-ish" gitweb.output | |
106 | ' | |
107 | test_debug 'cat gitweb.output' | |
108 | ||
109 | test_expect_success 'snapshots: good object id' ' | |
110 | ID=`git rev-parse --verify HEAD` && | |
111 | gitweb_run "p=.git;a=snapshot;h=$ID;sf=tgz" && | |
112 | grep "Status: 200 OK" gitweb.output | |
113 | ' | |
745a2db4 | 114 | test_debug 'cat gitweb.headers' |
fdb0c36e MR |
115 | |
116 | test_expect_success 'snapshots: bad object id' ' | |
117 | gitweb_run "p=.git;a=snapshot;h=abcdef01234;sf=tgz" && | |
118 | grep "404 - Object does not exist" gitweb.output | |
119 | ' | |
120 | test_debug 'cat gitweb.output' | |
121 | ||
b7d565ea TK |
122 | # ---------------------------------------------------------------------- |
123 | # modification times (Last-Modified and If-Modified-Since) | |
124 | ||
2a8a4490 | 125 | test_expect_success DATE_PARSER 'modification: feed last-modified' ' |
b7d565ea TK |
126 | gitweb_run "p=.git;a=atom;h=master" && |
127 | grep "Status: 200 OK" gitweb.headers && | |
128 | grep "Last-modified: Thu, 7 Apr 2005 22:14:13 +0000" gitweb.headers | |
129 | ' | |
130 | test_debug 'cat gitweb.headers' | |
131 | ||
2a8a4490 | 132 | test_expect_success DATE_PARSER 'modification: feed if-modified-since (modified)' ' |
b7d565ea TK |
133 | export HTTP_IF_MODIFIED_SINCE="Wed, 6 Apr 2005 22:14:13 +0000" && |
134 | test_when_finished "unset HTTP_IF_MODIFIED_SINCE" && | |
135 | gitweb_run "p=.git;a=atom;h=master" && | |
136 | grep "Status: 200 OK" gitweb.headers | |
137 | ' | |
138 | test_debug 'cat gitweb.headers' | |
139 | ||
2a8a4490 | 140 | test_expect_success DATE_PARSER 'modification: feed if-modified-since (unmodified)' ' |
b7d565ea TK |
141 | export HTTP_IF_MODIFIED_SINCE="Thu, 7 Apr 2005 22:14:13 +0000" && |
142 | test_when_finished "unset HTTP_IF_MODIFIED_SINCE" && | |
143 | gitweb_run "p=.git;a=atom;h=master" && | |
144 | grep "Status: 304 Not Modified" gitweb.headers | |
145 | ' | |
146 | test_debug 'cat gitweb.headers' | |
fdb0c36e | 147 | |
2a8a4490 | 148 | test_expect_success DATE_PARSER 'modification: snapshot last-modified' ' |
8745db63 TK |
149 | gitweb_run "p=.git;a=snapshot;h=master;sf=tgz" && |
150 | grep "Status: 200 OK" gitweb.headers && | |
151 | grep "Last-modified: Thu, 7 Apr 2005 22:14:13 +0000" gitweb.headers | |
152 | ' | |
153 | test_debug 'cat gitweb.headers' | |
154 | ||
2a8a4490 | 155 | test_expect_success DATE_PARSER 'modification: snapshot if-modified-since (modified)' ' |
8745db63 TK |
156 | export HTTP_IF_MODIFIED_SINCE="Wed, 6 Apr 2005 22:14:13 +0000" && |
157 | test_when_finished "unset HTTP_IF_MODIFIED_SINCE" && | |
158 | gitweb_run "p=.git;a=snapshot;h=master;sf=tgz" && | |
159 | grep "Status: 200 OK" gitweb.headers | |
160 | ' | |
161 | test_debug 'cat gitweb.headers' | |
162 | ||
2a8a4490 | 163 | test_expect_success DATE_PARSER 'modification: snapshot if-modified-since (unmodified)' ' |
8745db63 TK |
164 | export HTTP_IF_MODIFIED_SINCE="Thu, 7 Apr 2005 22:14:13 +0000" && |
165 | test_when_finished "unset HTTP_IF_MODIFIED_SINCE" && | |
166 | gitweb_run "p=.git;a=snapshot;h=master;sf=tgz" && | |
167 | grep "Status: 304 Not Modified" gitweb.headers | |
168 | ' | |
169 | test_debug 'cat gitweb.headers' | |
170 | ||
2a8a4490 | 171 | test_expect_success DATE_PARSER 'modification: tree snapshot' ' |
8745db63 TK |
172 | ID=`git rev-parse --verify HEAD^{tree}` && |
173 | export HTTP_IF_MODIFIED_SINCE="Wed, 6 Apr 2005 22:14:13 +0000" && | |
174 | test_when_finished "unset HTTP_IF_MODIFIED_SINCE" && | |
175 | gitweb_run "p=.git;a=snapshot;h=$ID;sf=tgz" && | |
176 | grep "Status: 200 OK" gitweb.headers && | |
177 | ! grep -i "last-modified" gitweb.headers | |
178 | ' | |
179 | test_debug 'cat gitweb.headers' | |
180 | ||
b62a1a98 JWH |
181 | # ---------------------------------------------------------------------- |
182 | # load checking | |
183 | ||
184 | # always hit the load limit | |
185 | cat >>gitweb_config.perl <<\EOF | |
ab35469d | 186 | our $maxload = -1; |
b62a1a98 JWH |
187 | EOF |
188 | ||
ab35469d | 189 | test_expect_success 'load checking: load too high (default action)' ' |
b62a1a98 JWH |
190 | gitweb_run "p=.git" && |
191 | grep "Status: 503 Service Unavailable" gitweb.headers && | |
192 | grep "503 - The load average on the server is too high" gitweb.body | |
193 | ' | |
b62a1a98 JWH |
194 | test_debug 'cat gitweb.headers' |
195 | ||
196 | # turn off load checking | |
197 | cat >>gitweb_config.perl <<\EOF | |
198 | our $maxload = undef; | |
199 | EOF | |
200 | ||
201 | ||
36612e4d JN |
202 | # ---------------------------------------------------------------------- |
203 | # invalid arguments | |
204 | ||
205 | test_expect_success 'invalid arguments: invalid regexp (in project search)' ' | |
206 | gitweb_run "a=project_list;s=*\.git;sr=1" && | |
207 | grep "Status: 400" gitweb.headers && | |
208 | grep "400 - Invalid.*regexp" gitweb.body | |
209 | ' | |
210 | test_debug 'cat gitweb.headers' | |
211 | ||
e39e0d37 | 212 | test_done |