changeset 38023:c3fd9a0f8277

dispatch: mask negative exit code recorded in blackbox log That's what we do for the exit code delivered to the environment.
author Yuya Nishihara <yuya@tcha.org>
date Wed, 16 May 2018 20:22:23 +0900
parents 48853a927757
children f5a1aa8c6987
files mercurial/dispatch.py tests/test-blackbox.t
diffstat 2 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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