X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fhttpd-corner.t;h=4077a6d1a44bdb308dbacdaef2b5c7f7c2fcbef9;hb=1bbfab375438f149dcff9047dd0c5ed3a08eed53;hp=c72bc9c6368cc2b3f6fb2f49045cb374ffe96a56;hpb=7f3f4923ec711ec97a1204ec2c080e219f50ff3b;p=public-inbox.git diff --git a/t/httpd-corner.t b/t/httpd-corner.t index c72bc9c6..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); @@ -240,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); @@ -526,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();