Re: [Problem] test_must_fail makes possibly questionable assumptions about exit_code.
- From
Jeff King <peff@peff.net>
- Date
- Mar 1, 2018, 07:34 UTC
- Message-ID
- <20180301073458.GB31079@sigill.intra.peff.net>
- In-Reply-To
- <CANgJU+V3fmhdsD8Q2NgV+RF3dbRdASV-Qwbp-agGjm6Y-PUCEw@mail.gmail.com>
On Wed, Feb 28, 2018 at 05:46:22PM +0100, demerphq wrote:
Show 20 quoted lines
> > You're right. I cut down my example too much and dropped the necessary
> > eval magic. Try this:
> >
> > -- >8 --
> > SIG{__DIE__} = sub {
> > CORE::die @_ if $^S || !defined($^S);
> > print STDERR "fatal: @_";
> > exit 128;
> > };
>
> FWIW, this doesn't need to use CORE::die like that unless you have
> code that overrides die() or CORE::GLOBAL::die, which would be pretty
> unusual.
>
> die() within $SIG{__DIE__} is special cased not to trigger $SIG{__DIE__} again.
>
> Of course it doesn't hurt, but it might make a perl hacker do a double
> take why you are doing it. Maybe add a comment like
>
> # using CORE::die to armor against overridden die()Thanks, I agree it should just be "die". I pulled this from an old error-handling pattern I used in some of my scripts (which _does_ override die). I screwed it up when cutting it down the first time, but then I didn't cut enough the second. :)
-Peff