dispatch: mask negative exit code recorded in blackbox log
That's what we do for the exit code delivered to the environment.
--- a/mercurial/dispatch.py Wed May 16 20:17:50 2018 +0900
+++ b/mercurial/dispatch.py Wed May 16 20:22:23 2018 +0900
@@ -239,7 +239,7 @@
req.ui.log('uiblocked', 'ui blocked ms',
**pycompat.strkwargs(req.ui._blockedtimes))
req.ui.log("commandfinish", "%s exited %d after %0.2f seconds\n",
- msg, ret, duration)
+ msg, ret & 255, duration)
try:
req._runexithandlers()
except: # exiting, so no re-raises
--- a/tests/test-blackbox.t Wed May 16 20:17:50 2018 +0900
+++ b/tests/test-blackbox.t Wed May 16 20:22:23 2018 +0900
@@ -7,6 +7,9 @@
> @command(b'crash', [], b'hg crash')
> def crash(ui, *args, **kwargs):
> raise Exception("oops")
+ > @command(b'abort', [], b'hg abort')
+ > def abort(ui, *args, **kwargs):
+ > raise error.Abort(b"oops")
> EOF
$ abspath=`pwd`/myextension.py
@@ -44,6 +47,14 @@
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> add non-existent exited 1 after * seconds (glob)
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> blackbox
+abort exit code
+ $ rm ./.hg/blackbox.log
+ $ hg abort 2> /dev/null
+ [255]
+ $ hg blackbox -l 2
+ 1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> abort exited 255 after * seconds (glob)
+ 1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> blackbox -l 2
+
unhandled exception
$ rm ./.hg/blackbox.log
$ hg crash 2> /dev/null