Mercurial > hg
view tests/test-narrow-debugcommands.t @ 45825:8f07f5a9c3de
worker: raise exception instead of calling sys.exit() with child's code
When a worker process returns an error code, we would call
`sys.exit()` with that exit code on the main process. The `SystemExit`
exception would then get caught in `scmutil.callcatch()`, which would
return that error code. The comment there says "Commands shouldn't
sys.exit directly", which I agree with. This patch changes it so we
raise a specific exception when a worker fails so we can catch
instead. I think that means that `SystemExit` is now always an
internal error.
(I had earlier thought that this call to `sys.exit()` was from within
the child process until Matt Harbison made me look again, so thanks
for that!)
Differential Revision: https://phab.mercurial-scm.org/D9287
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Sat, 07 Nov 2020 21:50:28 -0800 |
parents | ce0bc2952e2a |
children | ccd76e292be5 |
line wrap: on
line source
$ . "$TESTDIR/narrow-library.sh" $ hg init repo $ cd repo $ cat << EOF > .hg/store/narrowspec > [include] > path:foo > [exclude] > EOF $ cp .hg/store/narrowspec .hg/narrowspec.dirstate $ echo treemanifest >> .hg/requires $ echo narrowhg-experimental >> .hg/requires $ mkdir -p foo/bar $ echo b > foo/f $ echo c > foo/bar/f $ hg commit -Am hi adding foo/bar/f adding foo/f $ hg debugindex -m rev linkrev nodeid p1 p2 0 0 14a5d056d75a 000000000000 000000000000 $ hg debugindex --dir foo rev linkrev nodeid p1 p2 0 0 e635c7857aef 000000000000 000000000000 $ hg debugindex --dir foo/ rev linkrev nodeid p1 p2 0 0 e635c7857aef 000000000000 000000000000 $ hg debugindex --dir foo/bar rev linkrev nodeid p1 p2 0 0 e091d4224761 000000000000 000000000000 $ hg debugindex --dir foo/bar/ rev linkrev nodeid p1 p2 0 0 e091d4224761 000000000000 000000000000 $ hg debugdata -m 0 foo\x00e635c7857aef92ac761ce5741a99da159abbbb24t (esc) $ hg debugdata --dir foo 0 bar\x00e091d42247613adff5d41b67f15fe7189ee97b39t (esc) f\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc) $ hg debugdata --dir foo/ 0 bar\x00e091d42247613adff5d41b67f15fe7189ee97b39t (esc) f\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc) $ hg debugdata --dir foo/bar 0 f\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc) $ hg debugdata --dir foo/bar/ 0 f\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)