From: Eric Wong Date: Sun, 27 Feb 2022 11:17:14 +0000 (+0000) Subject: t/lei-sigpipe: ensure SIGPIPE is unblocked for this test X-Git-Tag: v1.8.0~24 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=798bd392d273735a69f0b009e70d8bb2dbc4a7e4 t/lei-sigpipe: ensure SIGPIPE is unblocked for this test Tests run under systemd (and similar) have SIGPIPE blocked by default. This was causing this SIGPIPE test to get stuck when run by automated builders used by Nix. Thanks to Julien Moutinho and Dominique Martinet for tracking down this failure. Reported-by: Julien Moutinho Reported-by: Dominique Martinet Link: https://public-inbox.org/meta/20220227080422.gyqowrxomzu6gyin@sourcephile.fr/ --- diff --git a/t/lei-sigpipe.t b/t/lei-sigpipe.t index 6b2772a6..7fab9aeb 100644 --- a/t/lei-sigpipe.t +++ b/t/lei-sigpipe.t @@ -1,10 +1,25 @@ #!perl -w -# Copyright (C) 2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ use strict; use v5.10.1; use PublicInbox::TestCommon; -use POSIX qw(WTERMSIG WIFSIGNALED SIGPIPE); +use POSIX qw(WTERMSIG WIFSIGNALED SIGPIPE SIG_UNBLOCK SIG_SETMASK sigprocmask); +use PublicInbox::OnDestroy; + +# undo systemd (and similar) blocking SIGPIPE, since lei expects to be run +# from an interactive terminal: +# https://public-inbox.org/meta/20220227080422.gyqowrxomzu6gyin@sourcephile.fr/ +my $set = POSIX::SigSet->new; +my $old = POSIX::SigSet->new; +$set->emptyset or xbail "sigemptyset $!"; +$old->emptyset or xbail "sigemptyset $!"; +$set->addset(SIGPIPE); +sigprocmask(SIG_UNBLOCK, $set, $old) or xbail "SIG_UNBLOCK: $!"; +my $cleanup = PublicInbox::OnDestroy->new($$, sub { + sigprocmask(SIG_SETMASK, $old); +}); + test_lei(sub { my $f = "$ENV{HOME}/big.eml"; my $imported;