diff options
author | Eric Wong <e@80x24.org> | 2021-01-19 09:34:28 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-01-21 03:29:07 +0000 |
commit | c304991c2b872e7e80f18d0e470ff115b5ffe69e (patch) | |
tree | b770ff9779ad7f8e10ab3abf194b0bd574ec1d5f /xt | |
parent | 90de75619d2ec8a59c265fd8f2c6cc1d4a7daba2 (diff) | |
download | public-inbox-c304991c2b872e7e80f18d0e470ff115b5ffe69e.tar.gz |
We need to properly propagate SIGPIPE to the top-level lei-daemon process and avoid relying on auto-close, since auto-close triggers Perl warnings when explicit close() does not.
Diffstat (limited to 'xt')
-rw-r--r-- | xt/lei-sigpipe.t | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/xt/lei-sigpipe.t b/xt/lei-sigpipe.t index 4d35bbb3..448bd7db 100644 --- a/xt/lei-sigpipe.t +++ b/xt/lei-sigpipe.t @@ -11,19 +11,22 @@ require_mods(qw(json DBD::SQLite Search::Xapian)); my $do_test = sub { my $env = shift // {}; - pipe(my ($r, $w)) or BAIL_OUT $!; - open my $err, '+>', undef or BAIL_OUT $!; - my $opt = { run_mode => 0, 1 => $w, 2 => $err }; - my $tp = start_script([qw(lei q -t), 'bytes:1..'], $env, $opt); - close $w; - sysread($r, my $buf, 1); - close $r; # trigger SIGPIPE - $tp->join; - ok(WIFSIGNALED($?), 'signaled'); - is(WTERMSIG($?), SIGPIPE, 'got SIGPIPE'); - seek($err, 0, 0); - my @err = grep(!m{mkdir /dev/null\b}, <$err>); - is_deeply(\@err, [], 'no errors'); + for my $out ([], [qw(-f mboxcl2)]) { + pipe(my ($r, $w)) or BAIL_OUT $!; + open my $err, '+>', undef or BAIL_OUT $!; + my $opt = { run_mode => 0, 1 => $w, 2 => $err }; + my $cmd = [qw(lei q -t), @$out, 'bytes:1..']; + my $tp = start_script($cmd, $env, $opt); + close $w; + sysread($r, my $buf, 1); + close $r; # trigger SIGPIPE + $tp->join; + ok(WIFSIGNALED($?), "signaled @$out"); + is(WTERMSIG($?), SIGPIPE, "got SIGPIPE @$out"); + seek($err, 0, 0); + my @err = grep(!m{mkdir /dev/null\b}, <$err>); + is_deeply(\@err, [], "no errors @$out"); + } }; $do_test->(); |