# HG changeset patch # User Sergey Kandaurov # Date 1692972728 -14400 # Node ID 2a0a6035a1af4f4836d5e71d337e5f34d21a4dfa # Parent 716d7500317da289e0c8da7243f395df023791a6 Tests: removed TODO and try_run() checks for legacy versions. diff --git a/body_chunked.t b/body_chunked.t --- a/body_chunked.t +++ b/body_chunked.t @@ -178,22 +178,12 @@ like(http_transfer_encoding("chunked\nTr like(http_transfer_encoding('chunked, identity'), qr/501 Not Implemented/, 'transfer encoding list'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - like(http_transfer_encoding("chunked\nContent-Length: 5"), qr/400 Bad/, 'transfer encoding with content-length'); -} - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.2'); - like(http_transfer_encoding("chunked", "1.0"), qr/400 Bad/, 'transfer encoding in HTTP/1.0 requests'); -} - ############################################################################### sub read_body_file { diff --git a/dav.t b/dav.t --- a/dav.t +++ b/dav.t @@ -108,9 +108,6 @@ like($r, qr/201 Created.*(Content-Length is(-s $t->testdir() . '/file', 10, 'put file extra data size'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - $r = http(<{headers}{':status'}, 502, 'i ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; is($frame->{headers}{':status'}, 502, 'invalid header name ctl'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - $f->{http_start}('/'); $f->{data}('Hello'); $frames = $f->{field_bad}(n => "n n"); ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; is($frame->{headers}{':status'}, 502, 'invalid header name space'); -} - $f->{http_start}('/'); $f->{data}('Hello'); $frames = $f->{field_bad}(v => "v\nv"); diff --git a/h2.t b/h2.t --- a/h2.t +++ b/h2.t @@ -304,9 +304,6 @@ is($frame, undef, 'HEAD - no body'); # CONNECT -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - $s = Test::Nginx::HTTP2->new(); $sid = $s->new_stream({ method => 'CONNECT' }); $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); @@ -314,8 +311,6 @@ local $TODO = 'not yet' unless $t->has_v ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; is($frame->{headers}->{':status'}, 405, 'CONNECT - not allowed'); -} - # TRACE $s = Test::Nginx::HTTP2->new(); diff --git a/h2_absolute_redirect.t b/h2_absolute_redirect.t --- a/h2_absolute_redirect.t +++ b/h2_absolute_redirect.t @@ -121,32 +121,22 @@ like(get('on', '/dir'), qr!Location: htt like(get('on', '/i/dir'), qr!Location: http://on:$p/i/dir/\x0d?$!m, 'directory alias'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - like(get('on', '/dir%20sp'), qr!Location: http://on:$p/dir%20sp/\x0d?$!m, 'directory escaped'); like(get('on', '/dir%20sp?a=b'), qr!Location: http://on:$p/dir%20sp/\?a=b\x0d?$!m, 'directory escaped args'); -} - like(get('on', '/auto'), qr!Location: http://on:$p/auto/\x0d?$!m, 'auto'); like(get('on', '/auto?a=b'), qr!Location: http://on:$p/auto/\?a=b\x0d?$!m, 'auto args'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - like(get('on', '/auto%20sp'), qr!Location: http://on:$p/auto%20sp/\x0d?$!m, 'auto escaped'); like(get('on', '/auto%20sp?a=b'), qr!Location: http://on:$p/auto%20sp/\?a=b\x0d?$!m, 'auto escaped args'); -} - like(get('on', '/return301'), qr!Location: http://on:$p/redirect\x0d?$!m, 'return'); @@ -163,30 +153,20 @@ like(get('host', '/return301/port'), qr! like(get('off', '/dir'), qr!Location: /dir/\x0d?$!m, 'off directory'); like(get('off', '/i/dir'), qr!Location: /i/dir/\x0d?$!m, 'off directory alias'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - like(get('off', '/dir%20sp'), qr!Location: /dir%20sp/\x0d?$!m, 'off directory escaped'); like(get('off', '/dir%20sp?a=b'), qr!Location: /dir%20sp/\?a=b\x0d?$!m, 'off directory escaped args'); -} - like(get('off', '/auto'), qr!Location: /auto/\x0d?$!m, 'off auto'); like(get('off', '/auto?a=b'), qr!Location: /auto/\?a=b\x0d?$!m, 'off auto args'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - like(get('off', '/auto%20sp'), qr!Location: /auto%20sp/\x0d?$!m, 'auto escaped'); like(get('off', '/auto%20sp?a=b'), qr!Location: /auto%20sp/\?a=b\x0d?$!m, 'auto escaped args'); -} - like(get('off', '/return301'), qr!Location: /redirect\x0d?$!m, 'off return'); # per RFC 3986, these characters are not allowed unescaped: @@ -196,17 +176,12 @@ like(get('off', '/return301'), qr!Locati SKIP: { skip 'win32', 1 if $^O eq 'MSWin32'; -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - like(get('off', '/auto%20%22%23%25%3C%3E%3F%5C%5E%60%7B%7C%7D'), qr!Location: /auto%20%22%23%25%3C%3E%3F%5C%5E%60%7B%7C%7D/\x0d?$!m, 'auto escaped strict'); } -} - ############################################################################### sub get { diff --git a/h2_headers.t b/h2_headers.t --- a/h2_headers.t +++ b/h2_headers.t @@ -1090,17 +1090,12 @@ is($frame->{headers}->{':status'}, 400, ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; is($frame->{headers}->{':status'}, 400, 'invalid path'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - $sid = $s->new_stream({ path => "/t1.html\x02" }); $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; is($frame->{headers}->{':status'}, 400, 'invalid path control'); -} - # ngx_http_v2_parse_int() error handling # NGX_ERROR diff --git a/h2_request_body_extra.t b/h2_request_body_extra.t --- a/h2_request_body_extra.t +++ b/h2_request_body_extra.t @@ -87,7 +87,6 @@ http { EOF -plan(skip_all => 'not yet') unless $t->has_version('1.21.2'); $t->plan(50); # suppress deprecation warning diff --git a/h2_ssl.t b/h2_ssl.t --- a/h2_ssl.t +++ b/h2_ssl.t @@ -94,15 +94,10 @@ skip 'OpenSSL too old', 1 if $t->has_module('OpenSSL') and not $t->has_feature('openssl:1.1.0'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.4'); - ok(!get_ssl_socket(['unknown']), 'alpn rejected'); } -} - like(http_get('/', socket => get_ssl_socket(['http/1.1'])), qr/200 OK/, 'alpn to HTTP/1.1 fallback'); diff --git a/http_absolute_redirect.t b/http_absolute_redirect.t --- a/http_absolute_redirect.t +++ b/http_absolute_redirect.t @@ -116,32 +116,22 @@ like(get('on', '/dir'), qr!Location: htt like(get('on', '/i/dir'), qr!Location: http://on:$p/i/dir/\x0d?$!m, 'directory alias'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - like(get('on', '/dir%20sp'), qr!Location: http://on:$p/dir%20sp/\x0d?$!m, 'directory escaped'); like(get('on', '/dir%20sp?a=b'), qr!Location: http://on:$p/dir%20sp/\?a=b\x0d?$!m, 'directory escaped args'); -} - like(get('on', '/auto'), qr!Location: http://on:$p/auto/\x0d?$!m, 'auto'); like(get('on', '/auto?a=b'), qr!Location: http://on:$p/auto/\?a=b\x0d?$!m, 'auto args'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - like(get('on', '/auto%20sp'), qr!Location: http://on:$p/auto%20sp/\x0d?$!m, 'auto escaped'); like(get('on', '/auto%20sp?a=b'), qr!Location: http://on:$p/auto%20sp/\?a=b\x0d?$!m, 'auto escaped args'); -} - like(get('on', '/return301'), qr!Location: http://on:$p/redirect\x0d?$!m, 'return'); @@ -158,30 +148,20 @@ like(get('host', '/return301/port'), qr! like(get('off', '/dir'), qr!Location: /dir/\x0d?$!m, 'off directory'); like(get('off', '/i/dir'), qr!Location: /i/dir/\x0d?$!m, 'off directory alias'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - like(get('off', '/dir%20sp'), qr!Location: /dir%20sp/\x0d?$!m, 'off directory escaped'); like(get('off', '/dir%20sp?a=b'), qr!Location: /dir%20sp/\?a=b\x0d?$!m, 'off directory escaped args'); -} - like(get('off', '/auto'), qr!Location: /auto/\x0d?$!m, 'off auto'); like(get('off', '/auto?a=b'), qr!Location: /auto/\?a=b\x0d?$!m, 'off auto args'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - like(get('off', '/auto%20sp'), qr!Location: /auto%20sp/\x0d?$!m, 'auto escaped'); like(get('off', '/auto%20sp?a=b'), qr!Location: /auto%20sp/\?a=b\x0d?$!m, 'auto escaped args'); -} - like(get('off', '/return301'), qr!Location: /redirect\x0d?$!m, 'off return'); # per RFC 3986, these characters are not allowed unescaped: @@ -191,17 +171,12 @@ like(get('off', '/return301'), qr!Locati SKIP: { skip 'win32', 1 if $^O eq 'MSWin32'; -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - like(get('off', '/auto%20%22%23%25%3C%3E%3F%5C%5E%60%7B%7C%7D'), qr!Location: /auto%20%22%23%25%3C%3E%3F%5C%5E%60%7B%7C%7D/\x0d?$!m, 'auto escaped strict'); } -} - ############################################################################### sub get { diff --git a/http_host.t b/http_host.t --- a/http_host.t +++ b/http_host.t @@ -170,14 +170,8 @@ is(http_host_header('123.40.56.78:9000:8 'double port hack'); like(http_host_header("localhost\nHost: again", 1), qr/ 400 /, 'host repeat'); - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - like(http_host_header("localhost\x02", 1), qr/ 400 /, 'control'); -} - ############################################################################### sub http_host_header { diff --git a/http_keepalive_shutdown.t b/http_keepalive_shutdown.t --- a/http_keepalive_shutdown.t +++ b/http_keepalive_shutdown.t @@ -55,8 +55,6 @@ EOF ############################################################################### -local $TODO = 'not yet' unless $t->has_version('1.21.6'); - # signaling on graceful shutdown to client that keepalive connection is closing my $s = http(< 1); diff --git a/http_method.t b/http_method.t --- a/http_method.t +++ b/http_method.t @@ -59,9 +59,6 @@ Connection: close EOF -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - like(http(<has_version('1.21.1'); - like(http_get('/ /'), qr/400 Bad/, 'space'); - -} - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - like(http_get("/\x02"), qr/400 Bad/, 'control'); -} - like(http_get('/%02'), qr!x /\x02 x!, 'control escaped'); ############################################################################### diff --git a/ignore_invalid_headers.t b/ignore_invalid_headers.t --- a/ignore_invalid_headers.t +++ b/ignore_invalid_headers.t @@ -125,15 +125,10 @@ my $bad4 = 'GET / HTTP/1.0' . CRLF my $bad5 = 'GET / HTTP/1.0' . CRLF . "foo\x02: x-bar" . CRLF . CRLF; -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.1'); - like(http($bad3), qr/400 Bad/, 'colon first'); like(http($bad4), qr/400 Bad/, 'space'); like(http($bad5), qr/400 Bad/, 'control'); -} - ############################################################################### sub get { diff --git a/mail_imap.t b/mail_imap.t --- a/mail_imap.t +++ b/mail_imap.t @@ -223,14 +223,8 @@ my $s = Test::Nginx::IMAP->new(); $s->send('a01 LOGIN {18+}' . CRLF . 'te\"st@example.com' . ' "se\\\\\"cret"'); - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - $s->ok('backslash in literal'); -} - # pipelining $s = Test::Nginx::IMAP->new(); @@ -239,23 +233,14 @@ local $TODO = 'not yet' unless $t->has_v $s->send('a01 INVALID COMMAND WITH ARGUMENTS' . CRLF . 'a02 NOOP'); $s->check(qr/^a01 BAD/, 'pipelined invalid command'); - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - $s->ok('pipelined noop after invalid command'); -} - $s->send('a03 FOOBAR {10+}' . CRLF . 'test test ' . CRLF . 'a04 NOOP'); $s->check(qr/^a03 BAD/, 'invalid with non-sync literal'); $s->check(qr/^(a04 |$)/, 'literal not command'); -TODO: { -todo_skip('not yet', 2) unless $t->has_version('1.21.0'); - # skipped without a fix, since with level-triggered event methods # this hogs cpu till the connection is closed by the backend server, # and generates a lot of debug logs @@ -268,6 +253,4 @@ todo_skip('not yet', 2) unless $t->has_v $s->ok('pipelined login'); $s->ok('pipelined logout'); -} - ############################################################################### diff --git a/mail_imap_ssl.t b/mail_imap_ssl.t --- a/mail_imap_ssl.t +++ b/mail_imap_ssl.t @@ -228,12 +228,7 @@ like($f, qr!^on:SUCCESS:(/?CN=2.example. like($f, qr!^on:SUCCESS:(/?CN=3.example.com):\1:\w+:\w+:[^:]+:s5$!m, 'log - trusted cert'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.2'); - $f = $t->read_file('auth2.log'); like($f, qr|^$cipher:$sslversion$|m, 'log - cipher sslversion'); -} - ############################################################################### diff --git a/mail_max_errors.t b/mail_max_errors.t --- a/mail_max_errors.t +++ b/mail_max_errors.t @@ -61,7 +61,7 @@ mail { EOF -$t->try_run('no max_errors')->plan(18); +$t->run()->plan(18); ############################################################################### diff --git a/mail_pop3.t b/mail_pop3.t --- a/mail_pop3.t +++ b/mail_pop3.t @@ -202,27 +202,15 @@ is(get_auth_caps($s), 'PLAIN:LOGIN:CRAM- $s->send('INVALID COMMAND WITH ARGUMENTS' . CRLF . 'NOOP'); $s->check(qr/^-ERR/, 'pipelined invalid command'); - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - $s->ok('pipelined noop after invalid command'); -} - $s->send('USER test@example.com' . CRLF . 'PASS secret' . CRLF . 'QUIT'); $s->ok('pipelined user'); - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - $s->ok('pipelined pass'); $s->ok('pipelined quit'); -} - $s = Test::Nginx::POP3->new(); $s->read(); @@ -230,15 +218,9 @@ local $TODO = 'not yet' unless $t->has_v . encode_base64('test@example.com', '') . CRLF . encode_base64('secret', '')); $s->check(qr/\+ VXNlcm5hbWU6/, 'pipelined auth username challenge'); - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - $s->check(qr/\+ UGFzc3dvcmQ6/, 'pipelined auth password challenge'); $s->ok('pipelined auth'); -} - ############################################################################### sub get_auth_caps { diff --git a/mail_smtp.t b/mail_smtp.t --- a/mail_smtp.t +++ b/mail_smtp.t @@ -258,16 +258,9 @@ my $s = Test::Nginx::SMTP->new(); $s->print('MAIL FROM: SIZE=100' . CRLF . 'RCPT TO:' . CRLF . 'RS'); - $s->ok('split pipelined mail from'); - -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - $s->ok('split pipelined rcpt to'); -} - $s->send('ET'); $s->ok('split pipelined rset'); @@ -284,10 +277,6 @@ local $TODO = 'not yet' unless $t->has_v . 'RCPT TO:' . CRLF . 'RCPT TO:' . CRLF . 'RSET'); - -TODO: { -todo_skip 'long pipelined - not yet', 6 unless $t->has_version('1.21.0'); - $s->ok('long pipelined mail from'); $s->ok('long pipelined rcpt to'); $s->ok('long pipelined rcpt to 2'); @@ -295,8 +284,6 @@ todo_skip 'long pipelined - not yet', 6 $s->ok('long pipelined rcpt to 4'); $s->ok('long pipelined rset'); -} - # Connection must stay even if error returned to rcpt to command $s = Test::Nginx::SMTP->new(); @@ -333,12 +320,7 @@ select undef, undef, undef, 0.1; $s->send('AR'); $s->check(qr/^5.. /, 'invalid split command'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.0'); - $s->send('HELO example.com'); $s->ok('good after invalid split command'); -} - ############################################################################### diff --git a/mail_ssl.t b/mail_ssl.t --- a/mail_ssl.t +++ b/mail_ssl.t @@ -174,9 +174,6 @@ skip 'no ALPN support in IO::Socket::SSL ); $s->ok('alpn'); -TODO: { -local $TODO = 'not yet' unless $t->has_version('1.21.4'); - $s = Test::Nginx::IMAP->new( PeerAddr => '127.0.0.1:' . port(8148), SSL => 1, @@ -186,8 +183,6 @@ ok(!$s->read(), 'alpn rejected'); } -} - # starttls imap $s = Test::Nginx::IMAP->new(PeerAddr => '127.0.0.1:' . port(8149)); diff --git a/mp4_start_key_frame.t b/mp4_start_key_frame.t --- a/mp4_start_key_frame.t +++ b/mp4_start_key_frame.t @@ -61,7 +61,7 @@ system('ffmpeg -nostdin -loglevel quiet . '-pix_fmt yuv420p -g 15 -c:v libx264 ' . "${\($t->testdir())}/test.mp4") == 0 or die "Can't create mp4 file: $!"; -$t->try_run('no mp4_start_key_frame')->plan(4); +$t->run()->plan(4); ############################################################################### diff --git a/proxy_ssl_certificate_empty.t b/proxy_ssl_certificate_empty.t --- a/proxy_ssl_certificate_empty.t +++ b/proxy_ssl_certificate_empty.t @@ -98,7 +98,7 @@ sleep 1 if $^O eq 'MSWin32'; $t->write_file('index.html', ''); -$t->try_run('no empty value support')->plan(2); +$t->run()->plan(2); ############################################################################### diff --git a/proxy_ssl_certificate_vars.t b/proxy_ssl_certificate_vars.t --- a/proxy_ssl_certificate_vars.t +++ b/proxy_ssl_certificate_vars.t @@ -132,7 +132,7 @@ sleep 1 if $^O eq 'MSWin32'; $t->write_file('password', '3.example.com'); $t->write_file('index.html', ''); -$t->try_run('no upstream ssl_certificate variables')->plan(4); +$t->run()->plan(4); ############################################################################### diff --git a/ssi.t b/ssi.t --- a/ssi.t +++ b/ssi.t @@ -148,14 +148,9 @@ like(http_get('/test3.html'), qr/^XtestX like(http_get('/test4-echo-none.html'), qr/^XX$/m, 'echo encoding none'); -TODO: { -local $TODO = 'no strict URI escaping yet' unless $t->has_version('1.21.1'); - like(http_get('/test5-echo-url.html'), qr/^X%3Ctest%3EX$/m, 'echo encoding url'); -} - like(http_get('/test6-echo-entity.html'), qr/^X<test>X$/m, 'echo encoding entity'); diff --git a/ssl_curve.t b/ssl_curve.t --- a/ssl_curve.t +++ b/ssl_curve.t @@ -71,7 +71,7 @@ foreach my $name ('localhost') { or die "Can't create certificate for $name: $!\n"; } -$t->try_run('no $ssl_curve')->plan(1); +$t->run()->plan(1); ############################################################################### diff --git a/stream_proxy_half_close.t b/stream_proxy_half_close.t --- a/stream_proxy_half_close.t +++ b/stream_proxy_half_close.t @@ -48,7 +48,7 @@ stream { EOF -$t->try_run('no proxy_half_close')->plan(2); +$t->run()->plan(2); ############################################################################### diff --git a/stream_proxy_ssl_certificate_vars.t b/stream_proxy_ssl_certificate_vars.t --- a/stream_proxy_ssl_certificate_vars.t +++ b/stream_proxy_ssl_certificate_vars.t @@ -146,7 +146,7 @@ sleep 1 if $^O eq 'MSWin32'; $t->write_file('password', '3.example.com'); $t->write_file('index.html', ''); -$t->try_run('no upstream ssl_certificate variables')->plan(4); +$t->run()->plan(4); ############################################################################### diff --git a/stream_ssl_alpn.t b/stream_ssl_alpn.t --- a/stream_ssl_alpn.t +++ b/stream_ssl_alpn.t @@ -71,7 +71,7 @@ foreach my $name ('localhost') { or die "Can't create certificate for $name: $!\n"; } -$t->try_run('no ssl_alpn')->plan(6); +$t->run()->plan(6); ############################################################################### diff --git a/uwsgi_ssl_certificate_vars.t b/uwsgi_ssl_certificate_vars.t --- a/uwsgi_ssl_certificate_vars.t +++ b/uwsgi_ssl_certificate_vars.t @@ -130,7 +130,7 @@ sleep 1 if $^O eq 'MSWin32'; $t->write_file('password', '3.example.com'); $t->write_file('index.html', ''); -$t->try_run('no upstream ssl_certificate variables')->plan(4); +$t->run()->plan(4); ###############################################################################