diff tests/test-logtoprocess.t @ 28901:a368da441b32

logtoprocess: new experimental extension This extension lets you direct specific ui.log() information to shell commands, spawned in the background. This can be used to, say, capture timings, commandfailure tracebacks, etc., making the output available to other command-line tools.
author Martijn Pieters <mjpieters@fb.com>
date Tue, 05 Apr 2016 17:39:59 +0100
parents
children e92daf156d5c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-logtoprocess.t	Tue Apr 05 17:39:59 2016 +0100
@@ -0,0 +1,54 @@
+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