From 7160f1b519aece0fe645d22a7d8fb954a43ad6fb Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 10 Sep 2023 19:37:32 +0000 Subject: [PATCH 10/11] tests: move broken app test to Perl 5 integration test Less Ruby means fewer incompatibilities to worry about with every new version. --- t/integration.ru | 1 + t/integration.t | 6 ++++++ test/unit/test_server.rb | 14 -------------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/t/integration.ru b/t/integration.ru index 086126ab..888833a9 100644 --- a/t/integration.ru +++ b/t/integration.ru @@ -98,6 +98,7 @@ def rack_input_tests(env) when '/pid'; [ 200, {}, [ "#$$\n" ] ] when '/early_hints_rack2'; early_hints(env, "r\n2") when '/early_hints_rack3'; early_hints(env, %w(r 3)) + when '/broken_app'; raise RuntimeError, 'hello' else '/'; [ 200, {}, [ env_dump(env) ] ] end # case PATH_INFO (GET) when 'POST' diff --git a/t/integration.t b/t/integration.t index bea221ce..ba17dd9e 100644 --- a/t/integration.t +++ b/t/integration.t @@ -118,6 +118,12 @@ SKIP: { is_deeply([grep(/^X-Nil:/, @$hdr)], ['X-Nil: '], 'nil header value accepted for broken apps') or diag(explain($hdr)); +check_stderr; +($status, $hdr, $bdy) = do_req($srv, 'GET /broken_app HTTP/1.0'); +like($status, qr!\AHTTP/1\.[0-1] 500\b!, 'got 500 error on broken endpoint'); +is($bdy, undef, 'no response body after exception'); +truncate($errfh, 0); + my $ck_early_hints = sub { my ($note) = @_; $c = unix_start($u1, 'GET /early_hints_rack2 HTTP/1.0'); diff --git a/test/unit/test_server.rb b/test/unit/test_server.rb index 0a710d12..2af12eac 100644 --- a/test/unit/test_server.rb +++ b/test/unit/test_server.rb @@ -127,20 +127,6 @@ def test_after_reply sock.close end - def test_broken_app - teardown - app = lambda { |env| raise RuntimeError, "hello" } - # [200, {}, []] } - redirect_test_io do - @server = HttpServer.new(app, :listeners => [ "127.0.0.1:#@port"] ) - @server.start - end - sock = tcp_socket('127.0.0.1', @port) - sock.syswrite("GET / HTTP/1.0\r\n\r\n") - assert_match %r{\AHTTP/1.[01] 500\b}, sock.sysread(4096) - assert_nil sock.close - end - def test_simple_server results = hit(["http://localhost:#{@port}/test"]) assert_equal 'hello!\n', results[0], "Handler didn't really run"