tests/test-worker.t
changeset 32041 38963a53ab0d
parent 31696 9d3d56aa1a9f
child 32042 8f8ad0139b8b
--- 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):