Mercurial > hg
view tests/test-logtoprocess.t @ 30934:6d642ecf1a89
dispatch: start profiling earlier
This makes it possible to profile extension loading and setup, which
takes a substantial fraction of overall execution time for fast
commands.
(99% of this commit is simply changes of indentation to reflect the
hoisting of the two calls to maybeprofile to a single one that
happens earlier.)
# no-check-commit
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Mon, 13 Feb 2017 20:47:41 -0800 |
parents | a368da441b32 |
children | e92daf156d5c |
line wrap: on
line source
Test if logtoprocess correctly captures command-related log calls. $ hg init $ cat > $TESTTMP/foocommand.py << EOF > from mercurial import cmdutil > from time import sleep > cmdtable = {} > command = cmdutil.command(cmdtable) > @command('foo', []) > def foo(ui, repo): > ui.log('foo', 'a message: %(bar)s\n', bar='spam') > EOF $ cat >> $HGRCPATH << EOF > [extensions] > logtoprocess= > foocommand=$TESTTMP/foocommand.py > [logtoprocess] > command=echo 'logtoprocess command output:'; > echo "\$EVENT"; > echo "\$MSG1"; > echo "\$MSG2" > commandfinish=echo 'logtoprocess commandfinish output:'; > echo "\$EVENT"; > echo "\$MSG1"; > echo "\$MSG2"; > echo "\$MSG3" > foo=echo 'logtoprocess foo output:'; > echo "\$EVENT"; > echo "\$MSG1"; > echo "\$OPT_BAR" > EOF Running a command triggers both a ui.log('command') and a ui.log('commandfinish') call. The foo command also uses ui.log. Use head to ensure we wait for all lines to be produced, and sort to avoid ordering issues between the various processes we spawn: $ hg foo | head -n 17 | sort 0 a message: spam command commandfinish foo foo foo foo foo exited 0 after * seconds (glob) logtoprocess command output: logtoprocess commandfinish output: logtoprocess foo output: spam