git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [Problem] test_must_fail makes possibly questionable assumptions about exit_code.

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 28, 2018, 16:22 UTC
Message-ID
<xmqqk1uxm6db.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20180228074918.GA32127@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 27 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;
> };
>
> eval {
>   die "inside eval";
> };
> print "eval status: $@" if $@;
>
> die "outside eval";
> -- 8< --
>
> Running that should produce:
>
> $ perl foo.pl; echo $?
> eval status: inside eval at foo.pl line 8.
> fatal: outside eval at foo.pl line 12.
> 128
>
> It may be getting a little too black-magic, though. Embedding in an eval
> is at least straightforward, if a bit more invasive.

I briefly wondered if this affects die that are called by code that we did not write (i.e. from core or cpan via "use/require"), but (1) we do want this to affect them, so that we die with status code known to us, and (2) the way this uses CORE::die or exit depending on the surrounding 'eval' would "fool" their uses just like we want it to fool our uses, which is exactly what we want.

So, it looks like a good "black magic" ;-).
Previous: demerphqNext: demerphq
Message 14 of 26 in “[Problem] test_must_fail makes possibly questionable assumptions about exit_code.”
  1. Randall S. BeckerFeb 27, 2018
  2. Jonathan NiederFeb 28, 2018
  3. Eric WongFeb 28, 2018
  4. Jeff KingFeb 28, 2018
  5. Eric WongFeb 28, 2018
  6. Jeff KingFeb 28, 2018
  7. Randall S. BeckerFeb 28, 2018
  8. demerphqFeb 28, 2018
  9. Jeff KingMar 1, 2018
  10. demerphqMar 1, 2018
  11. Randall S. BeckerMar 1, 2018
  12. Jeff KingMar 1, 2018
  13. demerphqMar 1, 2018
  14. Junio C HamanoFeb 28, 2018
  15. demerphqFeb 28, 2018
  16. Randall S. BeckerFeb 28, 2018
  17. demerphqFeb 28, 2018
  18. demerphqFeb 28, 2018
  19. Randall S. BeckerFeb 28, 2018
  20. Jonathan NiederFeb 28, 2018
  21. Randall S. BeckerFeb 28, 2018
  22. Jonathan NiederFeb 28, 2018
  23. Randall S. BeckerFeb 28, 2018
  24. Randall S. BeckerFeb 28, 2018
  25. Jonathan NiederFeb 28, 2018
  26. Jeff KingMar 1, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.