# HG changeset patch # User Sergey Kandaurov # Date 1415354707 -10800 # Node ID d5bf5942a8b2b08c2bc2a7c66dbee28121a3ec36 # Parent 65d2d372ee31b9d0c218f9b3ff0964f08e84fb0e Tests: disambiguated parsing of the status code. diff --git a/fastcgi.t b/fastcgi.t --- a/fastcgi.t +++ b/fastcgi.t @@ -57,7 +57,7 @@ EOF ############################################################################### like(http_get('/'), qr/SEE-THIS/, 'fastcgi request'); -like(http_get('/redir'), qr/302/, 'fastcgi redirect'); +like(http_get('/redir'), qr/ 302 /, 'fastcgi redirect'); like(http_get('/'), qr/^3$/m, 'fastcgi third request'); unlike(http_head('/'), qr/SEE-THIS/, 'no data in HEAD'); diff --git a/fastcgi_keepalive.t b/fastcgi_keepalive.t --- a/fastcgi_keepalive.t +++ b/fastcgi_keepalive.t @@ -58,7 +58,7 @@ EOF ############################################################################### like(http_get('/'), qr/SEE-THIS/, 'fastcgi request'); -like(http_get('/redir'), qr/302/, 'fastcgi redirect'); +like(http_get('/redir'), qr/ 302 /, 'fastcgi redirect'); like(http_get('/'), qr/^request: 3$/m, 'fastcgi third request'); like(http_get('/single'), qr/^connection: 1$/m, 'single connection used'); diff --git a/http_expect_100_continue.t b/http_expect_100_continue.t --- a/http_expect_100_continue.t +++ b/http_expect_100_continue.t @@ -52,7 +52,7 @@ EOF ############################################################################### -like(http_100_request('/', '1.1'), qr/100/, 'expect 100 continue'); +like(http_100_request('/', '1.1'), qr/ 100 /, 'expect 100 continue'); # From RFC 2616, 8.2.3 Use of the 100 (Continue) Status: # @@ -62,7 +62,7 @@ like(http_100_request('/', '1.1'), qr/10 # 100 (Continue) response if such a request comes from an HTTP/1.0 # (or earlier) client. -unlike(http_100_request('/', '1.0'), qr/100/, 'no 100 continue via http 1.0'); +unlike(http_100_request('/', '1.0'), qr/ 100 /, 'no 100 continue via http 1.0'); ############################################################################### diff --git a/http_host.t b/http_host.t --- a/http_host.t +++ b/http_host.t @@ -112,31 +112,31 @@ is(http_absolute_path('[::123.45.67.89]' is(http_absolute_path('[::ffff:12.30.67.89]:4321'), '[::ffff:12.30.67.89]', 'ipv4-mapped ipv6 w/port (absolute request)'); -like(http_host_header('example.com/\:552', 1), qr/400/, +like(http_host_header('example.com/\:552', 1), qr/ 400 /, 'domain w/ path separators (host header)'); -like(http_absolute_path('\e/xample.com', 1), qr/400/, +like(http_absolute_path('\e/xample.com', 1), qr/ 400 /, 'domain w/ path separators (absolute request)'); -like(http_host_header('..examp-LE.com', 1), qr/400/, +like(http_host_header('..examp-LE.com', 1), qr/ 400 /, 'domain w/ double dot (host header)'); -like(http_absolute_path('com.exa-m.45..:', 1), qr/400/, +like(http_absolute_path('com.exa-m.45..:', 1), qr/ 400 /, 'domain w/ double dot (absolute request)'); -like(http_host_header('[abcd::e\f98:0/:7654:321]', 1), qr/400/, +like(http_host_header('[abcd::e\f98:0/:7654:321]', 1), qr/ 400 /, 'ipv6 literal w/ path separators (host header)'); -like(http_absolute_path('[abcd\::ef98:0:7654:321/]:12', 1), qr/400/, +like(http_absolute_path('[abcd\::ef98:0:7654:321/]:12', 1), qr/ 400 /, 'ipv6 literal w/ path separators (absolute request)'); -like(http_host_header('[abcd::ef98:0:7654:321]..:98', 1), qr/400/, +like(http_host_header('[abcd::ef98:0:7654:321]..:98', 1), qr/ 400 /, 'ipv6 literal w/ double dot (host header)'); -like(http_absolute_path('[ab..cd::ef98:0:7654:321]', 1), qr/400/, +like(http_absolute_path('[ab..cd::ef98:0:7654:321]', 1), qr/ 400 /, 'ipv6 literal w/ double dot (absolute request)'); -like(http_host_header('[abcd::ef98:0:7654:321]..:98', 1), qr/400/, +like(http_host_header('[abcd::ef98:0:7654:321]..:98', 1), qr/ 400 /, 'ipv6 literal w/ double dot (host header)'); -like(http_absolute_path('[ab..cd::ef98:0:7654:321]', 1), qr/400/, +like(http_absolute_path('[ab..cd::ef98:0:7654:321]', 1), qr/ 400 /, 'ipv6 literal w/ double dot (absolute request)'); diff --git a/memcached.t b/memcached.t --- a/memcached.t +++ b/memcached.t @@ -83,9 +83,9 @@ my $memd = Cache::Memcached->new(servers like(http_get('/'), qr/SEE-THIS/, 'memcached request'); -like(http_get('/notfound'), qr/404/, 'memcached not found'); +like(http_get('/notfound'), qr/ 404 /, 'memcached not found'); -like(http_get('/next'), qr/404/, 'not found with memcached_next_upstream'); +like(http_get('/next'), qr/ 404 /, 'not found with memcached_next_upstream'); unlike(http_head('/'), qr/SEE-THIS/, 'memcached no data in HEAD'); diff --git a/memcached_keepalive.t b/memcached_keepalive.t --- a/memcached_keepalive.t +++ b/memcached_keepalive.t @@ -124,8 +124,8 @@ my $memd2 = Cache::Memcached->new(server my $total = $memd1->stats()->{total}->{total_connections}; like(http_get('/'), qr/SEE-THIS/, 'keepalive memcached request'); -like(http_get('/notfound'), qr/404/, 'keepalive memcached not found'); -like(http_get('/next'), qr/404/, +like(http_get('/notfound'), qr/ 404 /, 'keepalive memcached not found'); +like(http_get('/next'), qr/ 404 /, 'keepalive not found with memcached_next_upstream'); like(http_get('/'), qr/SEE-THIS/, 'keepalive memcached request again'); like(http_get('/'), qr/SEE-THIS/, 'keepalive memcached request again'); diff --git a/not_modified.t b/not_modified.t --- a/not_modified.t +++ b/not_modified.t @@ -52,17 +52,17 @@ EOF ############################################################################### -like(http_get_ims('/t', 'Wed, 08 Jul 2037 22:53:52 GMT'), qr/304/, +like(http_get_ims('/t', 'Wed, 08 Jul 2037 22:53:52 GMT'), qr/ 304 /, '0x7F000000'); -like(http_get_ims('/t', 'Tue, 19 Jan 2038 03:14:07 GMT'), qr/304/, +like(http_get_ims('/t', 'Tue, 19 Jan 2038 03:14:07 GMT'), qr/ 304 /, '0x7FFFFFFF'); SKIP: { skip "only for 32-bit time_t", 2 if (gmtime(0xFFFFFFFF))[5] == 206; - like(http_get_ims('/t', 'Tue, 19 Jan 2038 03:14:08 GMT'), qr/200/, + like(http_get_ims('/t', 'Tue, 19 Jan 2038 03:14:08 GMT'), qr/ 200 /, '0x7FFFFFFF + 1'); - like(http_get_ims('/t', 'Fri, 25 Feb 2174 09:42:23 GMT'), qr/200/, + like(http_get_ims('/t', 'Fri, 25 Feb 2174 09:42:23 GMT'), qr/ 200 /, '0x17FFFFFFF'); } @@ -74,29 +74,29 @@ my ($t1, $etag); $t1 =~ /ETag: (".*")/; $etag = $1; -like(http_get_inm('/t', $etag), qr/304/, 'if-none-match'); -like(http_get_inm('/t', '"foo"'), qr/200/, 'if-none-match fail'); -like(http_get_inm('/t', '"foo", "bar", ' . $etag . ' , "baz"'), qr/304/, +like(http_get_inm('/t', $etag), qr/ 304 /, 'if-none-match'); +like(http_get_inm('/t', '"foo"'), qr/ 200 /, 'if-none-match fail'); +like(http_get_inm('/t', '"foo", "bar", ' . $etag . ' , "baz"'), qr/ 304 /, 'if-none-match with complex list'); -like(http_get_inm('/t', '*'), qr/304/, 'if-none-match all'); +like(http_get_inm('/t', '*'), qr/ 304 /, 'if-none-match all'); TODO: { local $TODO = 'not yet' unless $t->has_version('1.7.3'); -like(http_get_inm('/t', 'W/' . $etag), qr/304/, 'if-none-match weak'); +like(http_get_inm('/t', 'W/' . $etag), qr/ 304 /, 'if-none-match weak'); } -like(http_get_im('/t', $etag), qr/200/, 'if-match'); -like(http_get_im('/t', '"foo"'), qr/412/, 'if-match fail'); +like(http_get_im('/t', $etag), qr/ 200 /, 'if-match'); +like(http_get_im('/t', '"foo"'), qr/ 412 /, 'if-match fail'); like(http_get_im('/t', '"foo", "bar", ' . "\t" . $etag . ' , "baz"'), - qr/200/, 'if-match with complex list'); -like(http_get_im('/t', '*'), qr/200/, 'if-match all'); -like(http_get_im('/t', 'W/' . $etag), qr/412/, 'if-match weak fail'); + qr/ 200 /, 'if-match with complex list'); +like(http_get_im('/t', '*'), qr/ 200 /, 'if-match all'); +like(http_get_im('/t', 'W/' . $etag), qr/ 412 /, 'if-match weak fail'); # server MUST ignore precondition if its response wouldn't be 2xx or 412 -like(http_get_im('/nx', '"foo"'), qr/404/, 'if-match ignored with 404'); +like(http_get_im('/nx', '"foo"'), qr/ 404 /, 'if-match ignored with 404'); ############################################################################### diff --git a/range.t b/range.t --- a/range.t +++ b/range.t @@ -75,40 +75,40 @@ EOF my $t1; $t1 = http_get_range('/t1.html', 'Range: bytes=0-8'); -like($t1, qr/206/, 'range request - 206 partial reply'); +like($t1, qr/ 206 /, 'range request - 206 partial reply'); like($t1, qr/Content-Length: 9/, 'range request - correct length'); like($t1, qr/Content-Range: bytes 0-8\/1000/, 'range request - content range'); like($t1, qr/^X000XXXXX$/m, 'range request - correct content'); $t1 = http_get_range('/t1.html', 'Range: bytes=-10'); -like($t1, qr/206/, 'final bytes - 206 partial reply'); +like($t1, qr/ 206 /, 'final bytes - 206 partial reply'); like($t1, qr/Content-Length: 10/, 'final bytes - content length'); like($t1, qr/Content-Range: bytes 990-999\/1000/, 'final bytes - content range'); like($t1, qr/^X099XXXXXX$/m, 'final bytes - correct content'); $t1 = http_get_range('/t1.html', 'Range: bytes=990-'); -like($t1, qr/206/, 'final bytes explicit - 206 partial reply'); +like($t1, qr/ 206 /, 'final bytes explicit - 206 partial reply'); like($t1, qr/Content-Length: 10/, 'final bytes explicit - content length'); like($t1, qr/Content-Range: bytes 990-999\/1000/, 'final bytes explicit - content range'); like($t1, qr/^X099XXXXXX$/m, 'final bytes explicit - correct content'); $t1 = http_get_range('/t1.html', 'Range: bytes=990-1990'); -like($t1, qr/206/, 'more than length - 206 partial reply'); +like($t1, qr/ 206 /, 'more than length - 206 partial reply'); like($t1, qr/Content-Length: 10/, 'more than length - content length'); like($t1, qr/Content-Range: bytes 990-999\/1000/, 'more than length - content range'); like($t1, qr/^X099XXXXXX$/m, 'more than length - correct content'); $t1 = http_get_range('/t2.html', 'Range: bytes=990-1990'); -like($t1, qr/206/, 'recoded - 206 partial reply'); +like($t1, qr/ 206 /, 'recoded - 206 partial reply'); like($t1, qr/Content-Length: 10/, 'recoded - content length'); like($t1, qr/Content-Range: bytes 990-999\/1000/, 'recoded - content range'); like($t1, qr/^Y099YYYYYY$/m, 'recoded - correct content'); $t1 = http_get_range('/t1.html', 'Range: bytes=0-9, -10, 10-19'); -like($t1, qr/206/, 'multipart - 206 partial reply'); +like($t1, qr/ 206 /, 'multipart - 206 partial reply'); like($t1, qr/Content-Type: multipart\/byteranges; boundary=/, 'multipart - content type'); like($t1, qr/X000XXXXXX/m, 'multipart - content 0-9'); @@ -116,42 +116,42 @@ like($t1, qr/^X099XXXXXX\x0d?$/m, 'multi like($t1, qr/X001XXXXXX\x0d?$/m, 'multipart - content 10-19'); $t1 = http_get_range('/t1.html', 'Range: bytes=0-9, -10, 100000-, 10-19'); -like($t1, qr/206/, 'multipart big - 206 partial reply'); +like($t1, qr/ 206 /, 'multipart big - 206 partial reply'); like($t1, qr/Content-Type: multipart\/byteranges; boundary=/, 'multipart big - content type'); like($t1, qr/X000XXXXXX/m, 'multipart big - content 0-9'); like($t1, qr/^X099XXXXXX\x0d?$/m, 'multipart big - content -10 aka 990-999'); like($t1, qr/X001XXXXXX\x0d?$/m, 'multipart big - content 10-19'); -like(http_get_range('/t1.html', 'Range: bytes=100000-'), qr/416/, +like(http_get_range('/t1.html', 'Range: bytes=100000-'), qr/ 416 /, 'not satisfiable - too big first byte pos'); -like(http_get_range('/t1.html', 'Range: bytes=alpha'), qr/416/, +like(http_get_range('/t1.html', 'Range: bytes=alpha'), qr/ 416 /, 'not satisfiable - alpha in first byte pos'); -like(http_get_range('/t1.html', 'Range: bytes=10-alpha'), qr/416/, +like(http_get_range('/t1.html', 'Range: bytes=10-alpha'), qr/ 416 /, 'not satisfiable - alpha in last byte pos'); -like(http_get_range('/t1.html', 'Range: bytes=10'), qr/416/, +like(http_get_range('/t1.html', 'Range: bytes=10'), qr/ 416 /, 'not satisfiable - no hyphen'); -like(http_get_range('/t1.html', 'Range: bytes=10-11 12-'), qr/416/, +like(http_get_range('/t1.html', 'Range: bytes=10-11 12-'), qr/ 416 /, 'not satisfiable - no comma'); # last-byte-pos is taken to be equal to one less than the current length # of the entity-body in bytes -- rfc2616 sec 14.35. -like(http_get_range('/t1.html', 'Range: bytes=0-10001'), qr/206/, +like(http_get_range('/t1.html', 'Range: bytes=0-10001'), qr/ 206 /, 'satisfiable - last byte pos adjusted'); # total size of all ranges is greater than source response size -like(http_get_range('/t1.html', 'Range: bytes=0-10001, 0-0'), qr/200/, +like(http_get_range('/t1.html', 'Range: bytes=0-10001, 0-0'), qr/ 200 /, 'not satisfiable - malicious byte ranges'); -like(http_get_range('/t3.html', 'Range: bytes=0-9, -10'), qr/206/, +like(http_get_range('/t3.html', 'Range: bytes=0-9, -10'), qr/ 206 /, 'max_ranges not reached'); -like(http_get_range('/t3.html', 'Range: bytes=0-9, -10, 10000-'), qr/206/, +like(http_get_range('/t3.html', 'Range: bytes=0-9, -10, 10000-'), qr/ 206 /, 'max_ranges not reached bad range'); unlike(http_get_range('/t3.html', 'Range: bytes=0-9, -10, 10-19'), - qr/206/, 'max_ranges reached'); -unlike(http_get_range('/t4.html', 'Range: bytes=0-9'), qr/206/, + qr/ 206 /, 'max_ranges reached'); +unlike(http_get_range('/t4.html', 'Range: bytes=0-9'), qr/ 206 /, 'max_ranges zero'); ############################################################################### diff --git a/range_charset.t b/range_charset.t --- a/range_charset.t +++ b/range_charset.t @@ -84,7 +84,7 @@ my $t1; http_get('/t1.html'); $t1 = http_get_range('/t1.html', 'Range: bytes=0-9, 10-19'); -like($t1, qr/206/, 'charset - 206 partial reply'); +like($t1, qr/ 206 /, 'charset - 206 partial reply'); like($t1, qr/Content-Type: multipart\/byteranges; boundary=\w+\x0d\x0a/, 'charset - content type'); like($t1, qr/Content-Type: text\/html; charset=B(?!; charset)/, @@ -94,7 +94,7 @@ like($t1, qr/X001XXXXXX\x0d?$/m, 'charse http_get('/t2.html'); $t1 = http_get_range('/t2.html', 'Range: bytes=0-9, 10-19'); -like($t1, qr/206/, 'x-accel-charset - 206 partial reply'); +like($t1, qr/ 206 /, 'x-accel-charset - 206 partial reply'); like($t1, qr/Content-Type: multipart\/byteranges; boundary=\w+\x0d\x0a/, 'x-accel-charset - content type'); like($t1, qr/Content-Type: text\/html; charset=A(?!; charset)/, diff --git a/range_flv.t b/range_flv.t --- a/range_flv.t +++ b/range_flv.t @@ -57,20 +57,20 @@ my $t1; # FLV has 13 byte header at start. $t1 = http_get_range('/t1.flv?start=100', 'Range: bytes=0-9'); -like($t1, qr/206/, 'first bytes - 206 partial reply'); +like($t1, qr/ 206 /, 'first bytes - 206 partial reply'); like($t1, qr/Content-Length: 10/, 'first bytes - correct length'); like($t1, qr/Content-Range: bytes 0-9\/913/, 'first bytes - content range'); like($t1, qr/^FLV.{7}$/m, 'first bytes - correct content'); $t1 = http_get_range('/t1.flv?start=100', 'Range: bytes=-10'); -like($t1, qr/206/, 'final bytes - 206 partial reply'); +like($t1, qr/ 206 /, 'final bytes - 206 partial reply'); like($t1, qr/Content-Length: 10/, 'final bytes - content length'); like($t1, qr/Content-Range: bytes 903-912\/913/, 'final bytes - content range'); like($t1, qr/^X099XXXXXX$/m, 'final bytes - correct content'); $t1 = http_get_range('/t1.flv?start=100', 'Range: bytes=0-99'); -like($t1, qr/206/, 'multi buffers - 206 partial reply'); +like($t1, qr/ 206 /, 'multi buffers - 206 partial reply'); like($t1, qr/Content-Length: 100/, 'multi buffers - content length'); like($t1, qr/Content-Range: bytes 0-99\/913/, 'multi buffers - content range'); like($t1, qr/^FLV.{10}X010XXXXXX(X01[1-7]XXXXXX){7}X018XXX$/m, diff --git a/range_if_range.t b/range_if_range.t --- a/range_if_range.t +++ b/range_if_range.t @@ -73,7 +73,7 @@ like($t1, qr/Last-Modified: /, 'if-range my $last = $1; $t1 = http_get_range('/t1.html', "Range: bytes=0-9\nIf-Range: $last"); -like($t1, qr/206/, 'if-range'); +like($t1, qr/ 206 /, 'if-range'); # If-Range + add_header Last-Modified "" @@ -90,7 +90,7 @@ like($t1, qr/Last-Modified: Mon, 28 Sep $t1 = http_get_range('/t3.html', "Range: bytes=0-9\nIf-Range: Mon, 28 Sep 1970 06:00:00 GMT"); -like($t1, qr/206/, 'if-range time'); +like($t1, qr/ 206 /, 'if-range time'); ############################################################################### diff --git a/range_mp4.t b/range_mp4.t --- a/range_mp4.t +++ b/range_mp4.t @@ -72,18 +72,18 @@ my $start = $fsz - 10; my $last = $fsz - 1; $t1 = http_get_range('/test.mp4?start=1', 'Range: bytes=0-9'); -like($t1, qr/206/, 'first bytes - 206 partial reply'); +like($t1, qr/ 206 /, 'first bytes - 206 partial reply'); like($t1, qr/Content-Length: 10/, 'first bytes - content length'); like($t1, qr/Content-Range: bytes 0-9\/$fsz/, 'first bytes - content range'); $t1 = http_get_range('/test.mp4?start=1', 'Range: bytes=-10'); -like($t1, qr/206/, 'final bytes - 206 partial reply'); +like($t1, qr/ 206 /, 'final bytes - 206 partial reply'); like($t1, qr/Content-Length: 10/, 'final bytes - content length'); like($t1, qr/Content-Range: bytes $start-$last\/$fsz/, 'final bytes - content range'); $t1 = http_get_range('/test.mp4?start=1', 'Range: bytes=0-99'); -like($t1, qr/206/, 'multi buffers - 206 partial reply'); +like($t1, qr/ 206 /, 'multi buffers - 206 partial reply'); like($t1, qr/Content-Length: 100/, 'multi buffers - content length'); like($t1, qr/Content-Range: bytes 0-99\/$fsz/, 'multi buffers - content range'); @@ -92,7 +92,7 @@ TODO: { local $TODO = 'multipart range on mp4'; $t1 = http_get_range('/test.mp4?start=1', 'Range: bytes=0-10,11-99'); -like($t1, qr/206/, 'multipart range - 206 partial reply'); +like($t1, qr/ 206 /, 'multipart range - 206 partial reply'); like($t1, qr/Content-Length: 100/, 'multipart range - content length'); like($t1, qr/Content-Range: bytes 0-10,11-99\/$fsz/, 'multipart range - content range'); diff --git a/scgi.t b/scgi.t --- a/scgi.t +++ b/scgi.t @@ -58,7 +58,7 @@ EOF ############################################################################### like(http_get('/'), qr/SEE-THIS/, 'scgi request'); -like(http_get('/redir'), qr/302/, 'scgi redirect'); +like(http_get('/redir'), qr/ 302 /, 'scgi redirect'); like(http_get('/'), qr/^3$/m, 'scgi third request'); unlike(http_head('/'), qr/SEE-THIS/, 'no data in HEAD');