view tests/test-check-help.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 b6c610bf567e
children 42d2b31cee0b
line wrap: on
line source

#require test-repo

  $ . "$TESTDIR/helpers-testrepo.sh"

  $ cat <<'EOF' > scanhelptopics.py
  > from __future__ import absolute_import, print_function
  > import re
  > import sys
  > if sys.platform == "win32":
  >     import msvcrt
  >     import os
  >     msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
  > stdout = getattr(sys.stdout, 'buffer', sys.stdout)
  > topics = set()
  > topicre = re.compile(br':hg:`help ([a-z0-9\-.]+)`')
  > for fname in sys.argv:
  >     with open(fname, 'rb') as f:
  >         topics.update(m.group(1) for m in topicre.finditer(f.read()))
  > for s in sorted(topics):
  >     stdout.write(b'%s\n' % s)
  > EOF

  $ cd "$TESTDIR"/..

Check if ":hg:`help TOPIC`" is valid:
(use "xargs -n1 -t" to see which help commands are executed)

  $ testrepohg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' \
  > | sed 's|\\|/|g' \
  > | xargs "$PYTHON" "$TESTTMP/scanhelptopics.py" \
  > | xargs -n1 hg help --config extensions.phabricator= > /dev/null