diff --git a/mercurial/worker.py b/mercurial/worker.py --- a/mercurial/worker.py +++ b/mercurial/worker.py @@ -133,6 +133,7 @@ def _posixworker(ui, func, staticargs, a if problem[0]: killworkers() oldchldhandler = signal.signal(signal.SIGCHLD, sigchldhandler) + ui.flush() for pargs in partition(args, workers): pid = os.fork() if pid == 0: diff --git a/tests/test-worker.t b/tests/test-worker.t new file mode 100644 --- /dev/null +++ b/tests/test-worker.t @@ -0,0 +1,54 @@ +Test UI worker interaction + + $ cat > t.py < from __future__ import absolute_import, print_function + > from mercurial import ( + > cmdutil, + > ui as uimod, + > worker, + > ) + > def runme(ui, args): + > for arg in args: + > ui.status('run\n') + > yield 1, arg + > cmdtable = {} + > command = cmdutil.command(cmdtable) + > @command('test', [], 'hg test [COST]') + > def t(ui, repo, cost=1.0): + > cost = float(cost) + > ui.status('start\n') + > runs = worker.worker(ui, cost, runme, (ui,), range(8)) + > for n, i in runs: + > pass + > ui.status('done\n') + > EOF + $ abspath=`pwd`/t.py + $ hg init + +Run tests with worker enable by forcing a heigh cost + + $ hg --config "extensions.t=$abspath" test 100000.0 + start + run + run + run + run + run + run + run + run + done + +Run tests without worker by forcing a low cost + + $ hg --config "extensions.t=$abspath" test 0.0000001 + start + run + run + run + run + run + run + run + run + done