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