# HG changeset patch # User Yuya Nishihara # Date 2018-05-16 11:22:23 # Node ID c3fd9a0f8277a4abbc709a91f642f841bad1cc62 # Parent 48853a92775710622e9b6ec4ec1b3128e87919e6 dispatch: mask negative exit code recorded in blackbox log That's what we do for the exit code delivered to the environment. diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -239,7 +239,7 @@ def dispatch(req): 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 diff --git a/tests/test-blackbox.t b/tests/test-blackbox.t --- a/tests/test-blackbox.t +++ b/tests/test-blackbox.t @@ -7,6 +7,9 @@ setup > @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 @@ failure exit code 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