test-blackbox.t
497 lines
| 17.8 KiB
| text/troff
|
Tads3Lexer
/ tests / test-blackbox.t
|
r18674 | setup | ||
|
r38036 | |||
$ cat > myextension.py <<EOF | ||||
> from mercurial import error, registrar | ||||
> cmdtable = {} | ||||
> command = registrar.command(cmdtable) | ||||
> @command(b'crash', [], b'hg crash') | ||||
> def crash(ui, *args, **kwargs): | ||||
> raise Exception("oops") | ||||
|
r42784 | > @command(b'abortcmd', [], b'hg abortcmd') | ||
|
r38043 | > def abort(ui, *args, **kwargs): | ||
> raise error.Abort(b"oops") | ||||
|
r38036 | > EOF | ||
$ abspath=`pwd`/myextension.py | ||||
|
r18674 | $ cat >> $HGRCPATH <<EOF | ||
> [extensions] | ||||
> blackbox= | ||||
|
r24705 | > mock=$TESTDIR/mockblackbox.py | ||
|
r18766 | > mq= | ||
|
r38036 | > myextension=$TESTTMP/myextension.py | ||
|
r29846 | > [alias] | ||
> confuse = log --limit 3 | ||||
|
r34299 | > so-confusing = confuse --style compact | ||
|
r18674 | > EOF | ||
|
r38036 | |||
|
r18674 | $ hg init blackboxtest | ||
$ cd blackboxtest | ||||
command, exit codes, and duration | ||||
$ echo a > a | ||||
$ hg add a | ||||
|
r28246 | $ hg blackbox --config blackbox.dirty=True | ||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> init blackboxtest exited 0 after * seconds (glob) | ||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> add a | ||||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> add a exited 0 after * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000+ (5000)> blackbox --config *blackbox.dirty=True* (glob) | ||||
|
r18674 | |||
|
r38036 | failure exit code | ||
$ rm ./.hg/blackbox.log | ||||
$ hg add non-existent | ||||
non-existent: $ENOENT$ | ||||
[1] | ||||
$ hg blackbox | ||||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> add non-existent | ||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> add non-existent exited 1 after * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> blackbox | ||||
|
r38036 | |||
|
r38043 | abort exit code | ||
$ rm ./.hg/blackbox.log | ||||
|
r42784 | $ hg abortcmd 2> /dev/null | ||
|
r38043 | [255] | ||
$ hg blackbox -l 2 | ||||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> abortcmd exited 255 after * seconds (glob) | ||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> blackbox -l 2 | ||||
|
r38043 | |||
|
r38036 | unhandled exception | ||
$ rm ./.hg/blackbox.log | ||||
|
r44242 | #if chg | ||
(chg exits 255 because it fails to receive an exit code) | ||||
$ hg crash 2>/dev/null | ||||
[255] | ||||
#else | ||||
(hg exits 1 because Python default exit code for uncaught exception is 1) | ||||
$ hg crash 2>/dev/null | ||||
|
r38036 | [1] | ||
|
r44242 | #endif | ||
|
r38036 | $ hg blackbox -l 2 | ||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> crash exited 1 after * seconds (glob) | ||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> blackbox -l 2 | ||||
|
r38036 | |||
|
r29846 | alias expansion is logged | ||
|
r34298 | $ rm ./.hg/blackbox.log | ||
|
r29846 | $ hg confuse | ||
$ hg blackbox | ||||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> confuse | ||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> alias 'confuse' expands to 'log --limit 3' | ||||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> confuse exited 0 after * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> blackbox | ||||
|
r29846 | |||
|
r34299 | recursive aliases work correctly | ||
$ rm ./.hg/blackbox.log | ||||
$ hg so-confusing | ||||
$ hg blackbox | ||||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> so-confusing | ||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> alias 'so-confusing' expands to 'confuse --style compact' | ||||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> alias 'confuse' expands to 'log --limit 3' | ||||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> so-confusing exited 0 after * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> blackbox | ||||
|
r34299 | |||
|
r40466 | custom date format | ||
$ rm ./.hg/blackbox.log | ||||
$ hg --config blackbox.date-format='%Y-%m-%d @ %H:%M:%S' \ | ||||
> --config devel.default-date='1334347993 0' --traceback status | ||||
A a | ||||
$ hg blackbox | ||||
|
r40474 | 2012-04-13 @ 20:13:13 bob @0000000000000000000000000000000000000000 (5000)> --config *blackbox.date-format=%Y-%m-%d @ %H:%M:%S* --config *devel.default-date=1334347993 0* --traceback status (glob) | ||
2012-04-13 @ 20:13:13 bob @0000000000000000000000000000000000000000 (5000)> --config *blackbox.date-format=%Y-%m-%d @ %H:%M:%S* --config *devel.default-date=1334347993 0* --traceback status exited 0 after * seconds (glob) | ||||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> blackbox | ||
|
r40466 | |||
|
r18677 | incoming change tracking | ||
create two heads to verify that we only see one change in the log later | ||||
$ hg commit -ma | ||||
$ hg up null | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo b > b | ||||
$ hg commit -Amb | ||||
adding b | ||||
created new head | ||||
clone, commit, pull | ||||
$ hg clone . ../blackboxtest2 | ||||
updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo c > c | ||||
$ hg commit -Amc | ||||
adding c | ||||
$ cd ../blackboxtest2 | ||||
$ hg pull | ||||
|
r35394 | pulling from $TESTTMP/blackboxtest | ||
|
r18677 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r34662 | new changesets d02f48003e62 | ||
|
r18677 | (run 'hg update' to get a working copy) | ||
|
r28025 | $ hg blackbox -l 6 | ||
|
r49421 | 1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote branch cache (served) with 1 labels and 2 nodes | ||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated branch cache (served.hidden) in * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote branch cache (served.hidden) with 1 labels and 2 nodes | ||||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> 1 incoming changes - new heads: d02f48003e62 | ||||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pull exited 0 after * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 6 | ||||
|
r18677 | |||
|
r18786 | we must not cause a failure if we cannot write to the log | ||
$ hg rollback | ||||
repository tip rolled back to revision 1 (undo pull) | ||||
|
r19082 | |||
|
r28024 | $ mv .hg/blackbox.log .hg/blackbox.log- | ||
$ mkdir .hg/blackbox.log | ||||
|
r18786 | $ hg --debug incoming | ||
|
r28024 | warning: cannot write to blackbox.log: * (glob) | ||
|
r35394 | comparing with $TESTTMP/blackboxtest | ||
|
r18786 | query 1; heads | ||
searching for changes | ||||
r43154 | all local changesets known remotely | |||
|
r18786 | changeset: 2:d02f48003e62c24e2659d97d30f2a83abe5d5d51 | ||
tag: tip | ||||
phase: draft | ||||
parent: 1:6563da9dcf87b1949716e38ff3e3dfaa3198eb06 | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 2:ab9d46b053ebf45b7996f2922b9893ff4b63d892 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: c | ||||
extra: branch=default | ||||
description: | ||||
c | ||||
$ hg pull | ||||
|
r35394 | pulling from $TESTTMP/blackboxtest | ||
|
r18786 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
|
r34662 | new changesets d02f48003e62 | ||
|
r18786 | (run 'hg update' to get a working copy) | ||
|
r28024 | a failure reading from the log is fatal | ||
|
r18786 | $ hg blackbox -l 3 | ||
|
r28024 | abort: *$TESTTMP/blackboxtest2/.hg/blackbox.log* (glob) | ||
|
r18786 | [255] | ||
|
r28024 | $ rmdir .hg/blackbox.log | ||
$ mv .hg/blackbox.log- .hg/blackbox.log | ||||
|
r18786 | |||
|
r18766 | backup bundles get logged | ||
$ touch d | ||||
$ hg commit -Amd | ||||
adding d | ||||
created new head | ||||
$ hg strip tip | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/blackboxtest2/.hg/strip-backup/*-backup.hg (glob) | ||||
|
r28025 | $ hg blackbox -l 6 | ||
|
r49421 | 1970-01-01 00:00:00.000 bob @73f6ee326b27d820b0472f1a825e3a50f3dc489b (5000)> strip tip | ||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> saved backup bundle to $TESTTMP/blackboxtest2/.hg/strip-backup/73f6ee326b27-7612e004-backup.hg | ||||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated branch cache (immutable) in * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote branch cache (immutable) with 1 labels and 2 nodes | ||||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> strip tip exited 0 after * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 6 | ||||
|
r18766 | |||
|
r18674 | extension and python hooks - use the eol extension for a pythonhook | ||
$ echo '[extensions]' >> .hg/hgrc | ||||
$ echo 'eol=' >> .hg/hgrc | ||||
$ echo '[hooks]' >> .hg/hgrc | ||||
$ echo 'update = echo hooked' >> .hg/hgrc | ||||
$ hg update | ||||
|
r33425 | The fsmonitor extension is incompatible with the eol extension and has been disabled. (fsmonitor !) | ||
|
r26752 | hooked | ||
|
r26028 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
|
r32698 | updated to "d02f48003e62: c" | ||
|
r28029 | 1 other heads for branch "default" | ||
|
r33425 | $ cat >> .hg/hgrc <<EOF | ||
> [extensions] | ||||
> # disable eol, because it is not needed for subsequent tests | ||||
> # (in addition, keeping it requires extra care for fsmonitor) | ||||
> eol=! | ||||
> EOF | ||||
|
r37525 | $ hg blackbox -l 5 | ||
|
r49421 | 1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> update (no-chg !) | ||
1970-01-01 00:00:00.000 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pythonhook-preupdate: hgext.eol.preupdate finished in * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> exthook-update: echo hooked finished in * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> update exited 0 after * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> serve --no-profile --cmdserver chgunix --address $TESTTMP.chgsock/server.* --daemon-postexec 'chdir:/' (glob) (chg !) | ||||
1970-01-01 00:00:00.000 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> blackbox -l 5 | ||||
|
r18674 | |||
|
r19066 | log rotation | ||
$ echo '[blackbox]' >> .hg/hgrc | ||||
$ echo 'maxsize = 20 b' >> .hg/hgrc | ||||
$ echo 'maxfiles = 3' >> .hg/hgrc | ||||
$ hg status | ||||
$ hg status | ||||
$ hg status | ||||
$ hg tip -q | ||||
|
r24706 | 2:d02f48003e62 | ||
|
r19066 | $ ls .hg/blackbox.log* | ||
.hg/blackbox.log | ||||
.hg/blackbox.log.1 | ||||
.hg/blackbox.log.2 | ||||
|
r28024 | $ cd .. | ||
$ hg init blackboxtest3 | ||||
$ cd blackboxtest3 | ||||
$ hg blackbox | ||||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> init blackboxtest3 exited 0 after * seconds (glob) | ||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> blackbox | ||||
|
r28024 | $ mv .hg/blackbox.log .hg/blackbox.log- | ||
$ mkdir .hg/blackbox.log | ||||
|
r28336 | $ sed -e 's/\(.*test1.*\)/#\1/; s#\(.*commit2.*\)#os.rmdir(".hg/blackbox.log")\ | ||
> os.rename(".hg/blackbox.log-", ".hg/blackbox.log")\ | ||||
> \1#' $TESTDIR/test-dispatch.py > ../test-dispatch.py | ||||
|
r39743 | $ "$PYTHON" $TESTDIR/blackbox-readonly-dispatch.py | ||
|
r35742 | running: --debug add foo | ||
|
r35747 | warning: cannot write to blackbox.log: Is a directory (no-windows !) | ||
warning: cannot write to blackbox.log: $TESTTMP/blackboxtest3/.hg/blackbox.log: Access is denied (windows !) | ||||
|
r35742 | adding foo | ||
|
r28024 | result: 0 | ||
|
r35742 | running: --debug commit -m commit1 -d 2000-01-01 foo | ||
|
r35747 | warning: cannot write to blackbox.log: Is a directory (no-windows !) | ||
warning: cannot write to blackbox.log: $TESTTMP/blackboxtest3/.hg/blackbox.log: Access is denied (windows !) | ||||
|
r35742 | committing files: | ||
foo | ||||
committing manifest | ||||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 0:0e46349438790c460c5c9f7546bfcd39b267bbd2 | ||||
|
r38015 | result: 0 | ||
|
r35742 | running: --debug commit -m commit2 -d 2000-01-02 foo | ||
committing files: | ||||
foo | ||||
committing manifest | ||||
committing changelog | ||||
updating the branch cache | ||||
committed changeset 1:45589e459b2edfbf3dbde7e01f611d2c1e7453d7 | ||||
|
r38015 | result: 0 | ||
|
r35742 | running: --debug log -r 0 | ||
changeset: 0:0e46349438790c460c5c9f7546bfcd39b267bbd2 | ||||
phase: draft | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 0:9091aa5df980aea60860a2e39c95182e68d1ddec | ||||
|
r28024 | user: test | ||
date: Sat Jan 01 00:00:00 2000 +0000 | ||||
|
r35742 | files+: foo | ||
extra: branch=default | ||||
description: | ||||
commit1 | ||||
|
r28024 | |||
|
r38015 | result: 0 | ||
|
r35742 | running: --debug log -r tip | ||
changeset: 1:45589e459b2edfbf3dbde7e01f611d2c1e7453d7 | ||||
|
r28024 | tag: tip | ||
|
r35742 | phase: draft | ||
parent: 0:0e46349438790c460c5c9f7546bfcd39b267bbd2 | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 1:895aa9b7886f89dd017a6d62524e1f9180b04df9 | ||||
|
r28024 | user: test | ||
date: Sun Jan 02 00:00:00 2000 +0000 | ||||
|
r35742 | files: foo | ||
extra: branch=default | ||||
description: | ||||
commit2 | ||||
|
r28024 | |||
|
r38015 | result: 0 | ||
|
r28024 | $ hg blackbox | ||
|
r49421 | 1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updating the branch cache | ||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updated branch cache (served) in * seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> wrote branch cache (served) with 1 labels and 1 nodes | ||||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug commit -m commit2 -d 2000-01-02 foo exited 0 after *.?? seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r 0 | ||||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> writing .hg/cache/tags2-visible with 0 tags | ||||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r 0 exited 0 after *.?? seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r tip | ||||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r tip exited 0 after *.?? seconds (glob) | ||||
1970-01-01 00:00:00.000 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> blackbox | ||||
|
r19066 | |||
|
r47654 | Skip rotation if the .hg is read-only | ||
#if unix-permissions | ||||
$ chmod -w .hg | ||||
$ hg log -r. -T '{rev}\n' --config blackbox.maxsize=1 --debug | ||||
|
r51215 | warning: cannot rename '$TESTTMP/blackboxtest3/.hg/blackbox.log.1' to '$TESTTMP/blackboxtest3/.hg/blackbox.log': $EACCES$ | ||
warning: cannot write to blackbox.log: $EACCES$ | ||||
|
r47654 | 1 | ||
$ chmod +w .hg | ||||
#endif | ||||
|
r28407 | Test log recursion from dirty status check | ||
$ cat > ../r.py <<EOF | ||||
> from mercurial import context, error, extensions | ||||
> x=[False] | ||||
> def status(orig, *args, **opts): | ||||
|
r36758 | > args[0].repo().ui.log(b"broken", b"recursion?") | ||
|
r28407 | > return orig(*args, **opts) | ||
> def reposetup(ui, repo): | ||||
> extensions.wrapfunction(context.basectx, 'status', status) | ||||
> EOF | ||||
$ hg id --config extensions.x=../r.py --config blackbox.dirty=True | ||||
45589e459b2e tip | ||||
|
r18674 | cleanup | ||
$ cd .. | ||||
|
r34109 | |||
|
r40828 | Test missing log directory, which shouldn't be created automatically | ||
$ cat <<'EOF' > closeremove.py | ||||
> def reposetup(ui, repo): | ||||
> class rmrepo(repo.__class__): | ||||
> def close(self): | ||||
> super(rmrepo, self).close() | ||||
> self.ui.debug(b'removing %s\n' % self.vfs.base) | ||||
> self.vfs.rmtree() | ||||
> repo.__class__ = rmrepo | ||||
> EOF | ||||
$ hg init gone | ||||
$ cd gone | ||||
$ cat <<'EOF' > .hg/hgrc | ||||
> [extensions] | ||||
> closeremove = ../closeremove.py | ||||
> EOF | ||||
$ hg log --debug | ||||
removing $TESTTMP/gone/.hg | ||||
|
r40844 | warning: cannot write to blackbox.log: $ENOENT$ (no-windows !) | ||
warning: cannot write to blackbox.log: $TESTTMP/gone/.hg/blackbox.log: $ENOTDIR$ (windows !) | ||||
|
r40828 | $ cd .. | ||
|
r41781 | blackbox should disable itself if track is empty | ||
$ hg --config blackbox.track= init nothing_tracked | ||||
$ cd nothing_tracked | ||||
$ cat >> .hg/hgrc << EOF | ||||
> [blackbox] | ||||
> track = | ||||
> EOF | ||||
$ hg blackbox | ||||
$ cd $TESTTMP | ||||
|
r41782 | a '*' entry in blackbox.track is interpreted as log everything | ||
$ hg --config blackbox.track='*' \ | ||||
> --config blackbox.logsource=True \ | ||||
> init track_star | ||||
$ cd track_star | ||||
$ cat >> .hg/hgrc << EOF | ||||
> [blackbox] | ||||
> logsource = True | ||||
> track = * | ||||
> EOF | ||||
(only look for entries with specific logged sources, otherwise this test is | ||||
pretty brittle) | ||||
$ hg blackbox | egrep '\[command(finish)?\]' | ||||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000) [commandfinish]> --config *blackbox.track=* --config *blackbox.logsource=True* init track_star exited 0 after * seconds (glob) | ||
1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000) [command]> blackbox | ||||
|
r41782 | $ cd $TESTTMP | ||
|
r34109 | #if chg | ||
when using chg, blackbox.log should get rotated correctly | ||||
$ cat > $TESTTMP/noop.py << EOF | ||||
> import time | ||||
> from mercurial import registrar, scmutil | ||||
> cmdtable = {} | ||||
> command = registrar.command(cmdtable) | ||||
|
r44241 | > @command(b'noop') | ||
|
r34109 | > def noop(ui, repo): | ||
> pass | ||||
> EOF | ||||
$ hg init blackbox-chg | ||||
$ cd blackbox-chg | ||||
$ cat > .hg/hgrc << EOF | ||||
> [blackbox] | ||||
> maxsize = 500B | ||||
> [extensions] | ||||
> # extension change forces chg to restart | ||||
> noop=$TESTTMP/noop.py | ||||
> EOF | ||||
|
r39743 | $ "$PYTHON" -c 'print("a" * 400)' > .hg/blackbox.log | ||
|
r34109 | $ chg noop | ||
$ chg noop | ||||
$ chg noop | ||||
$ chg noop | ||||
$ chg noop | ||||
$ cat > showsize.py << 'EOF' | ||||
|
r40405 | > import os | ||
> import sys | ||||
|
r34109 | > limit = 500 | ||
> for p in sys.argv[1:]: | ||||
> size = os.stat(p).st_size | ||||
> if size >= limit: | ||||
> desc = '>=' | ||||
> else: | ||||
> desc = '<' | ||||
> print('%s: %s %d' % (p, desc, limit)) | ||||
> EOF | ||||
|
r39743 | $ "$PYTHON" showsize.py .hg/blackbox* | ||
|
r34109 | .hg/blackbox.log: < 500 | ||
.hg/blackbox.log.1: >= 500 | ||||
.hg/blackbox.log.2: >= 500 | ||||
$ cd .. | ||||
|
r34300 | With chg, blackbox should not create the log file if the repo is gone | ||
$ hg init repo1 | ||||
$ hg --config extensions.a=! -R repo1 log | ||||
$ rm -rf $TESTTMP/repo1 | ||||
$ hg --config extensions.a=! init repo1 | ||||
|
r34109 | #endif | ||
|
r34277 | |||
blackbox should work if repo.ui.log is not called (issue5518) | ||||
$ cat > $TESTTMP/raise.py << EOF | ||||
> from mercurial import registrar, scmutil | ||||
> cmdtable = {} | ||||
> command = registrar.command(cmdtable) | ||||
|
r36758 | > @command(b'raise') | ||
|
r34277 | > def raisecmd(*args): | ||
> raise RuntimeError('raise') | ||||
> EOF | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [blackbox] | ||||
> track = commandexception | ||||
> [extensions] | ||||
> raise=$TESTTMP/raise.py | ||||
> EOF | ||||
$ hg init $TESTTMP/blackbox-exception-only | ||||
$ cd $TESTTMP/blackbox-exception-only | ||||
#if chg | ||||
(chg exits 255 because it fails to receive an exit code) | ||||
$ hg raise 2>/dev/null | ||||
[255] | ||||
#else | ||||
(hg exits 1 because Python default exit code for uncaught exception is 1) | ||||
$ hg raise 2>/dev/null | ||||
[1] | ||||
#endif | ||||
$ head -1 .hg/blackbox.log | ||||
|
r49421 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000)> ** Unknown exception encountered with possibly-broken third-party extension "mock" (version N/A) | ||
|
r34277 | $ tail -2 .hg/blackbox.log | ||
RuntimeError: raise | ||||