##// END OF EJS Templates
branching: merge stable into default
branching: merge stable into default

File last commit:

r50387:b3e77d53 stable
r50401:44bc045a merge default
Show More
test-logtoprocess.t
122 lines | 3.4 KiB | text/troff | Tads3Lexer
/ tests / test-logtoprocess.t
Matt Harbison
test-logtoprocess: don't run on Windows...
r32915 #require no-windows
Jun Wu
test-logtoprocess: use cat to wait for outputs...
r30991 ATTENTION: logtoprocess runs commands asynchronously. Be sure to append "| cat"
to hg commands, to wait for the output, if you want to test its output.
Otherwise the test will be flaky.
Martijn Pieters
logtoprocess: new experimental extension...
r28901 Test if logtoprocess correctly captures command-related log calls.
$ hg init
$ cat > $TESTTMP/foocommand.py << EOF
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > from mercurial import registrar
Martijn Pieters
logtoprocess: new experimental extension...
r28901 > cmdtable = {}
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > command = registrar.command(cmdtable)
Boris Feld
configitems: register the test 'logtoprocess.foo' config
r34765 > configtable = {}
> configitem = registrar.configitem(configtable)
Yuya Nishihara
py3: byte-stringify inline extension in test-logtoprocess.t
r40655 > configitem(b'logtoprocess', b'foo',
Boris Feld
configitems: register the test 'logtoprocess.foo' config
r34765 > default=None,
> )
Boris Feld
logtoprocess: sends the canonical command name to the subprocess...
r40438 > @command(b'foobar', [])
Martijn Pieters
logtoprocess: new experimental extension...
r28901 > def foo(ui, repo):
Yuya Nishihara
py3: byte-stringify inline extension in test-logtoprocess.t
r40655 > ui.log(b'foo', b'a message: %s\n', b'spam')
Martijn Pieters
logtoprocess: new experimental extension...
r28901 > EOF
Simon Farnsworth
ui: provide a mechanism to track and log blocked time...
r30976 $ cp $HGRCPATH $HGRCPATH.bak
Martijn Pieters
logtoprocess: new experimental extension...
r28901 $ cat >> $HGRCPATH << EOF
> [extensions]
> logtoprocess=
> foocommand=$TESTTMP/foocommand.py
> [logtoprocess]
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 > command=(echo 'logtoprocess command output:';
Martijn Pieters
logtoprocess: new experimental extension...
r28901 > echo "\$EVENT";
Yuya Nishihara
logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)...
r40656 > echo "\$MSG1") > $TESTTMP/command.log
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 > commandfinish=(echo 'logtoprocess commandfinish output:';
Martijn Pieters
logtoprocess: new experimental extension...
r28901 > echo "\$EVENT";
> echo "\$MSG1";
Boris Feld
logtoprocess: sends the canonical command name to the subprocess...
r40438 > echo "canonical: \$OPT_CANONICAL_COMMAND") > $TESTTMP/commandfinish.log
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 > foo=(echo 'logtoprocess foo output:';
Martijn Pieters
logtoprocess: new experimental extension...
r28901 > echo "\$EVENT";
Yuya Nishihara
logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)...
r40656 > echo "\$MSG1") > $TESTTMP/foo.log
Martijn Pieters
logtoprocess: new experimental extension...
r28901 > EOF
Running a command triggers both a ui.log('command') and a
ui.log('commandfinish') call. The foo command also uses ui.log.
Jun Wu
test-logtoprocess: use cat to wait for outputs...
r30991 Use sort to avoid ordering issues between the various processes we spawn:
Boris Feld
logtoprocess: sends the canonical command name to the subprocess...
r40438 $ hg fooba
Augie Fackler
tests: sleep longer in test-logtoprocess.t...
r40413 $ sleep 1
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 $ cat $TESTTMP/command.log | sort
Martijn Pieters
logtoprocess: new experimental extension...
r28901
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 command
Boris Feld
logtoprocess: sends the canonical command name to the subprocess...
r40438 fooba
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 logtoprocess command output:
#if no-chg
$ cat $TESTTMP/commandfinish.log | sort
Boris Feld
logtoprocess: sends the canonical command name to the subprocess...
r40438 canonical: foobar
Martijn Pieters
logtoprocess: new experimental extension...
r28901 commandfinish
Boris Feld
logtoprocess: sends the canonical command name to the subprocess...
r40438 fooba exited 0 after * seconds (glob)
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 logtoprocess commandfinish output:
$ cat $TESTTMP/foo.log | sort
a message: spam
Martijn Pieters
logtoprocess: new experimental extension...
r28901 foo
logtoprocess foo output:
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 #endif
Simon Farnsworth
ui: provide a mechanism to track and log blocked time...
r30976
Confirm that logging blocked time catches stdio properly:
$ cp $HGRCPATH.bak $HGRCPATH
$ cat >> $HGRCPATH << EOF
> [extensions]
> logtoprocess=
> pager=
> [logtoprocess]
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 > uiblocked=echo "\$EVENT stdio \$OPT_STDIO_BLOCKED ms command \$OPT_COMMAND_DURATION ms" > $TESTTMP/uiblocked.log
Simon Farnsworth
ui: provide a mechanism to track and log blocked time...
r30976 > [ui]
> logblockedtimes=True
> EOF
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 $ hg log
Augie Fackler
tests: sleep longer in test-logtoprocess.t...
r40413 $ sleep 1
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 $ cat $TESTTMP/uiblocked.log
Simon Farnsworth
ui: log time spent blocked on stdio...
r30978 uiblocked stdio [0-9]+.[0-9]* ms command [0-9]+.[0-9]* ms (re)
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961
Try to confirm that pager wait on logtoprocess:
Arseniy Alekseyev
tests: fix the flaky test test-logtoprocess.t...
r50387 Add a script that waits on a file to appear. If the script is awaited by hg,
the script will die after the timeout before we could touch the file and the
resulting file will not exist. If not, we will touch the file and see it.
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961
Boris Feld
test: update test-logtoprocess.t to not requires less...
r40908 $ cat >> fakepager.py <<EOF
> import sys
> printed = False
> for line in sys.stdin:
> sys.stdout.write(line)
> printed = True
> if not printed:
> sys.stdout.write('paged empty output!\n')
> EOF
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 $ cat > $TESTTMP/wait-output.sh << EOF
> #!/bin/sh
Arseniy Alekseyev
tests: fix the flaky test test-logtoprocess.t...
r50387 > set -eu
> "$RUNTESTDIR/testlib/wait-on-file" 10 "$TESTTMP/wait-for-touched"
> touch "$TESTTMP/touched"
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 > EOF
$ chmod +x $TESTTMP/wait-output.sh
$ cat >> $HGRCPATH << EOF
> [extensions]
> logtoprocess=
> pager=
Boris Feld
test: update test-logtoprocess.t to not requires less...
r40908 > [pager]
> pager = "$PYTHON" $TESTTMP/fakepager.py
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 > [logtoprocess]
> commandfinish=$TESTTMP/wait-output.sh
> EOF
$ hg version -q --pager=always
Mercurial Distributed SCM (version *) (glob)
$ touch $TESTTMP/wait-for-touched
Arseniy Alekseyev
tests: fix the flaky test test-logtoprocess.t...
r50387 $ "$RUNTESTDIR/testlib/wait-on-file" 5 "$TESTTMP/touched"
Boris Feld
logtoprocess: add a test to show pager and ltp bad interaction...
r39961 $ test -f $TESTTMP/touched && echo "SUCCESS Pager is not waiting on ltp" || echo "FAIL Pager is waiting on ltp"
Boris Feld
logtoprocess: connect all fds to /dev/null to avoid bad interaction with pager...
r39962 SUCCESS Pager is not waiting on ltp