--- a/tests/test-worker.t Sat Apr 15 12:58:06 2017 +0900
+++ b/tests/test-worker.t Sat Apr 15 13:02:34 2017 +0900
@@ -4,20 +4,31 @@
> from __future__ import absolute_import, print_function
> from mercurial import (
> cmdutil,
+ > error,
> ui as uimod,
> worker,
> )
+ > def abort(ui, args):
+ > if args[0] == 0:
+ > # by first worker for test stability
+ > raise error.Abort('known exception')
+ > return runme(ui, [])
> def runme(ui, args):
> for arg in args:
> ui.status('run\n')
> yield 1, arg
+ > functable = {
+ > 'abort': abort,
+ > 'runme': runme,
+ > }
> cmdtable = {}
> command = cmdutil.command(cmdtable)
- > @command('test', [], 'hg test [COST]')
- > def t(ui, repo, cost=1.0):
+ > @command('test', [], 'hg test [COST] [FUNC]')
+ > def t(ui, repo, cost=1.0, func='runme'):
> cost = float(cost)
+ > func = functable[func]
> ui.status('start\n')
- > runs = worker.worker(ui, cost, runme, (ui,), range(8))
+ > runs = worker.worker(ui, cost, func, (ui,), range(8))
> for n, i in runs:
> pass
> ui.status('done\n')
@@ -52,3 +63,15 @@
run
run
done
+
+Known exception should be caught, but printed if --traceback is enabled
+
+ $ hg --config "extensions.t=$abspath" --config 'worker.numcpus=2' \
+ > test 100000.0 abort
+ start
+ abort: known exception
+ done
+
+ $ hg --config "extensions.t=$abspath" --config 'worker.numcpus=2' \
+ > test 100000.0 abort --traceback 2>&1 | grep '^Traceback'
+ Traceback (most recent call last):