The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use Test::TCP qw(test_tcp);
use IO::Socket::INET;
use Plack::Loader;

test_tcp(
    client => sub {
        my $port = shift;
        my $sock = IO::Socket::INET->new(
            PeerAddr => "localhost:$port",
            Proto => 'tcp',
        );
        my $req = "GET /bad request header/ HTTP/1.0\015\012\015\012";
        $sock->syswrite($req, length $req);
        $sock->sysread(my $buf, 1024);
        like $buf, qr/\b400\b/;
        note $buf;
    },
    server => sub {
        my $port = shift;
        local $SIG{__WARN__} = sub {
            ok 0, "No warnings";
            diag @_;
        };
        my $loader = Plack::Loader->load('Starlet', port => $port);
        $loader->run(sub { [200, ['Content-Type' => 'text/plain'], ['OK']] });
        exit;
    },
);

done_testing;