X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fhttpd-corner.t;h=4077a6d1a44bdb308dbacdaef2b5c7f7c2fcbef9;hb=1bbfab375438f149dcff9047dd0c5ed3a08eed53;hp=35318b501f6dfd3f237f796d7e5f5ec031dc020f;hpb=620b5e23dded54e0abf954752767bc9683a882e3;p=public-inbox.git diff --git a/t/httpd-corner.t b/t/httpd-corner.t index 35318b50..4077a6d1 100644 --- a/t/httpd-corner.t +++ b/t/httpd-corner.t @@ -6,6 +6,7 @@ use strict; use warnings; use Test::More; use Time::HiRes qw(gettimeofday tv_interval); +use PublicInbox::Spawn qw(which); foreach my $mod (qw(Plack::Util Plack::Builder HTTP::Date HTTP::Status IPC::Run)) { @@ -30,6 +31,9 @@ my $httpd = 'blib/script/public-inbox-httpd'; my $psgi = "./t/httpd-corner.psgi"; my $sock = tcp_server(); +# make sure stdin is not a pipe for lsof test to check for leaking pipes +open(STDIN, '<', '/dev/null') or die 'no /dev/null: $!'; + # Make sure we don't clobber socket options set by systemd or similar # using socket activation: my ($defer_accept_val, $accf_arg); @@ -157,14 +161,9 @@ SKIP: { } sub conn_for { - my ($sock, $msg) = @_; - my $conn = IO::Socket::INET->new( - PeerAddr => $sock->sockhost, - PeerPort => $sock->sockport, - Proto => 'tcp', - Type => SOCK_STREAM); + my ($dest, $msg) = @_; + my $conn = tcp_connect($dest); ok($conn, "connected for $msg"); - $conn->autoflush(1); setsockopt($conn, IPPROTO_TCP, TCP_NODELAY, 1); return $conn; } @@ -245,14 +244,7 @@ my $check_self = sub { }; SKIP: { - my $have_curl = 0; - foreach my $p (split(':', $ENV{PATH})) { - -x "$p/curl" or next; - $have_curl = 1; - last; - } - my $ntest = 4; - $have_curl or skip('curl(1) missing', $ntest); + which('curl') or skip('curl(1) missing', 4); my $base = 'http://' . $sock->sockhost . ':' . $sock->sockport; my $url = "$base/sha1"; my ($r, $w); @@ -531,6 +523,13 @@ SKIP: { defined(my $x = getsockopt($sock, SOL_SOCKET, $var)) or die; is($x, $accf_arg, 'SO_ACCEPTFILTER unchanged if previously set'); }; +SKIP: { + skip 'only testing lsof(8) output on Linux', 1 if $^O ne 'linux'; + skip 'no lsof in PATH', 1 unless which('lsof'); + my @lsof = `lsof -p $pid`; + is_deeply([grep(/\bdeleted\b/, @lsof)], [], 'no lingering deleted inputs'); + is_deeply([grep(/\bpipe\b/, @lsof)], [], 'no extra pipes with -W0'); +}; done_testing();