##// END OF EJS Templates
revlog: use radix tree also for matching keys shorter than 4 hex digits...
revlog: use radix tree also for matching keys shorter than 4 hex digits I don't know what the reason for the 4-digit limit was, and I can't think of any real disadvantages of using the radix tree also when the requested minimum length is short. This speeds up `hg log -T '{shortest(node,1)}\n'` from 2m16s to 4.5s by making that not fall back to pure code. Differential Revision: https://phab.mercurial-scm.org/D3453

File last commit:

r37525:9b16a67c default
r37875:92ed344a @27 default
Show More
test-blackbox.t
375 lines | 13.3 KiB | text/troff | Tads3Lexer
Durham Goode
blackbox: tests for the blackbox extension...
r18674 setup
$ cat >> $HGRCPATH <<EOF
> [extensions]
> blackbox=
Gregory Szorc
tests: move mock blackbox extension into own file...
r24705 > mock=$TESTDIR/mockblackbox.py
Durham Goode
blackbox: add backup bundle paths to blackbox logs...
r18766 > mq=
Augie Fackler
blackbox: also log alias expansions...
r29846 > [alias]
> confuse = log --limit 3
Augie Fackler
tests: add a test for blackbox with nested alias configurations...
r34299 > so-confusing = confuse --style compact
Durham Goode
blackbox: tests for the blackbox extension...
r18674 > EOF
$ hg init blackboxtest
$ cd blackboxtest
command, exit codes, and duration
$ echo a > a
$ hg add a
timeless
blackbox: log dirty state...
r28246 $ hg blackbox --config blackbox.dirty=True
Jun Wu
blackbox: set lastui even if ui.log is not called (issue5518)...
r34277 1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> init blackboxtest exited 0 after * seconds (glob)
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> add a
timeless
blackbox: store the blackbox ui object instead of the log file...
r28247 1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> add a exited 0 after * seconds (glob)
Yuya Nishihara
dispatch: verify result of early command parsing...
r35063 1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000+ (5000)> blackbox --config *blackbox.dirty=True* (glob)
Durham Goode
blackbox: tests for the blackbox extension...
r18674
Augie Fackler
blackbox: also log alias expansions...
r29846 alias expansion is logged
Augie Fackler
tests: clean up blackbox test around aliases a little bit
r34298 $ rm ./.hg/blackbox.log
Augie Fackler
blackbox: also log alias expansions...
r29846 $ hg confuse
$ hg blackbox
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> confuse
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> alias 'confuse' expands to 'log --limit 3'
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> confuse exited 0 after * seconds (glob)
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> blackbox
Augie Fackler
tests: add a test for blackbox with nested alias configurations...
r34299 recursive aliases work correctly
$ rm ./.hg/blackbox.log
$ hg so-confusing
$ hg blackbox
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> so-confusing
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> alias 'so-confusing' expands to 'confuse --style compact'
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> alias 'confuse' expands to 'log --limit 3'
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> so-confusing exited 0 after * seconds (glob)
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> blackbox
Durham Goode
blackbox: only show new heads on incoming...
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
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 pulling from $TESTTMP/blackboxtest
Durham Goode
blackbox: only show new heads on incoming...
r18677 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets d02f48003e62
Durham Goode
blackbox: only show new heads on incoming...
r18677 (run 'hg update' to get a working copy)
timeless
blackbox: flush output file descriptor...
r28025 $ hg blackbox -l 6
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pull
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated served branch cache in * seconds (glob)
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote served branch cache with 1 labels and 2 nodes
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> 1 incoming changes - new heads: d02f48003e62
timeless
blackbox: store the blackbox ui object instead of the log file...
r28247 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pull exited 0 after * seconds (glob)
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 6
Durham Goode
blackbox: only show new heads on incoming...
r18677
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
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)
Durham Goode
blackbox: don't run permission tests on non-unix systems...
r19082
timeless
tests: change blackbox test to work cross platform...
r28024 $ mv .hg/blackbox.log .hg/blackbox.log-
$ mkdir .hg/blackbox.log
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 $ hg --debug incoming
timeless
tests: change blackbox test to work cross platform...
r28024 warning: cannot write to blackbox.log: * (glob)
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 comparing with $TESTTMP/blackboxtest
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 query 1; heads
searching for changes
all local heads known remotely
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
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 pulling from $TESTTMP/blackboxtest
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets d02f48003e62
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 (run 'hg update' to get a working copy)
timeless
tests: change blackbox test to work cross platform...
r28024 a failure reading from the log is fatal
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 $ hg blackbox -l 3
timeless
tests: change blackbox test to work cross platform...
r28024 abort: *$TESTTMP/blackboxtest2/.hg/blackbox.log* (glob)
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 [255]
timeless
tests: change blackbox test to work cross platform...
r28024 $ rmdir .hg/blackbox.log
$ mv .hg/blackbox.log- .hg/blackbox.log
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786
Durham Goode
blackbox: add backup bundle paths to blackbox logs...
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)
timeless
blackbox: flush output file descriptor...
r28025 $ hg blackbox -l 6
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @73f6ee326b27d820b0472f1a825e3a50f3dc489b (5000)> strip tip
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> saved backup bundle to $TESTTMP/blackboxtest2/.hg/strip-backup/73f6ee326b27-7612e004-backup.hg
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated base branch cache in * seconds (glob)
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote base branch cache with 1 labels and 2 nodes
timeless
blackbox: store the blackbox ui object instead of the log file...
r28247 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> strip tip exited 0 after * seconds (glob)
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 6
Durham Goode
blackbox: add backup bundle paths to blackbox logs...
r18766
Durham Goode
blackbox: tests for the blackbox extension...
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
FUJIWARA Katsunori
tests: take extra care for fsmonitor at enabling incompatible extension...
r33425 The fsmonitor extension is incompatible with the eol extension and has been disabled. (fsmonitor !)
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 hooked
Pierre-Yves David
update: wlock the repo for the whole 'hg update' command...
r26028 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pulkit Goyal
update: show the commit to which we updated in case of multiple heads (BC)...
r32698 updated to "d02f48003e62: c"
Pierre-Yves David
update: warn about other topological heads on bare update...
r28029 1 other heads for branch "default"
FUJIWARA Katsunori
tests: take extra care for fsmonitor at enabling incompatible extension...
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
Martin von Zweigbergk
eol: look up partial nodeid as partial nodeid...
r37525 $ hg blackbox -l 5
Jun Wu
test-blackbox: make it compatible with chg...
r34108 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> update (no-chg !)
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pythonhook-preupdate: hgext.eol.preupdate finished in * seconds (glob)
1970/01/01 00:00:00 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> exthook-update: echo hooked finished in * seconds (glob)
timeless
blackbox: store the blackbox ui object instead of the log file...
r28247 1970/01/01 00:00:00 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> update exited 0 after * seconds (glob)
Jun Wu
test-blackbox: make it compatible with chg...
r34108 1970/01/01 00:00:00 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> serve --cmdserver chgunix --address $TESTTMP.chgsock/server.* --daemon-postexec 'chdir:/' (glob) (chg !)
Martin von Zweigbergk
eol: look up partial nodeid as partial nodeid...
r37525 1970/01/01 00:00:00 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> blackbox -l 5
Durham Goode
blackbox: tests for the blackbox extension...
r18674
Bryan O'Sullivan
blackbox: automatically rotate log files...
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
Gregory Szorc
tests: move blackbox testing of tags to test-tags.t...
r24706 2:d02f48003e62
Bryan O'Sullivan
blackbox: automatically rotate log files...
r19066 $ ls .hg/blackbox.log*
.hg/blackbox.log
.hg/blackbox.log.1
.hg/blackbox.log.2
timeless
tests: change blackbox test to work cross platform...
r28024 $ cd ..
$ hg init blackboxtest3
$ cd blackboxtest3
$ hg blackbox
Jun Wu
blackbox: set lastui even if ui.log is not called (issue5518)...
r34277 1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> init blackboxtest3 exited 0 after * seconds (glob)
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> blackbox
timeless
tests: change blackbox test to work cross platform...
r28024 $ mv .hg/blackbox.log .hg/blackbox.log-
$ mkdir .hg/blackbox.log
Danek Duvall
tests: Solaris sed does not support "\n" meaning newline in the RHS of s///...
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
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON $TESTDIR/blackbox-readonly-dispatch.py
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 running: --debug add foo
Matt Harbison
test-blackbox: stabilize for Windows...
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 !)
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 adding foo
timeless
tests: change blackbox test to work cross platform...
r28024 result: 0
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 running: --debug commit -m commit1 -d 2000-01-01 foo
Matt Harbison
test-blackbox: stabilize for Windows...
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 !)
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 committing files:
foo
committing manifest
committing changelog
updating the branch cache
committed changeset 0:0e46349438790c460c5c9f7546bfcd39b267bbd2
timeless
tests: change blackbox test to work cross platform...
r28024 result: None
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
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
timeless
tests: change blackbox test to work cross platform...
r28024 result: None
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 running: --debug log -r 0
changeset: 0:0e46349438790c460c5c9f7546bfcd39b267bbd2
phase: draft
parent: -1:0000000000000000000000000000000000000000
parent: -1:0000000000000000000000000000000000000000
manifest: 0:9091aa5df980aea60860a2e39c95182e68d1ddec
timeless
tests: change blackbox test to work cross platform...
r28024 user: test
date: Sat Jan 01 00:00:00 2000 +0000
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 files+: foo
extra: branch=default
description:
commit1
timeless
tests: change blackbox test to work cross platform...
r28024
result: None
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 running: --debug log -r tip
changeset: 1:45589e459b2edfbf3dbde7e01f611d2c1e7453d7
timeless
tests: change blackbox test to work cross platform...
r28024 tag: tip
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 phase: draft
parent: 0:0e46349438790c460c5c9f7546bfcd39b267bbd2
parent: -1:0000000000000000000000000000000000000000
manifest: 1:895aa9b7886f89dd017a6d62524e1f9180b04df9
timeless
tests: change blackbox test to work cross platform...
r28024 user: test
date: Sun Jan 02 00:00:00 2000 +0000
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 files: foo
extra: branch=default
description:
commit2
timeless
tests: change blackbox test to work cross platform...
r28024
result: None
$ hg blackbox
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updating the branch cache
Pierre-Yves David
caches: stop warming the cache after 'localrepo.commitctx'...
r32266 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updated served branch cache in * seconds (glob)
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> wrote served branch cache with 1 labels and 1 nodes
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug commit -m commit2 -d 2000-01-02 foo exited 0 after *.?? seconds (glob)
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r 0
timeless
blackbox: properly replace ui class...
r28248 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> writing .hg/cache/tags2-visible with 0 tags
Joerg Sonnenberger
blackbox: if --debug is used, also trace ui.debug() calls...
r35742 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r 0 exited 0 after *.?? seconds (glob)
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r tip
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r tip exited 0 after *.?? seconds (glob)
timeless
blackbox: log working directory version...
r28245 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> blackbox
Bryan O'Sullivan
blackbox: automatically rotate log files...
r19066
timeless
blackbox: guard against recursion from dirty check
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):
Yuya Nishihara
py3: byte-stringify test-blackbox.t
r36758 > args[0].repo().ui.log(b"broken", b"recursion?")
timeless
blackbox: guard against recursion from dirty check
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
Durham Goode
blackbox: tests for the blackbox extension...
r18674 cleanup
$ cd ..
Jun Wu
blackbox: fix rotation with chg...
r34109
#if chg
when using chg, blackbox.log should get rotated correctly
$ cat > $TESTTMP/noop.py << EOF
> from __future__ import absolute_import
> import time
> from mercurial import registrar, scmutil
> cmdtable = {}
> command = registrar.command(cmdtable)
> @command('noop')
> 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
$ $PYTHON -c 'print("a" * 400)' > .hg/blackbox.log
$ chg noop
$ chg noop
$ chg noop
$ chg noop
$ chg noop
$ cat > showsize.py << 'EOF'
> import os, sys
> 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
$ $PYTHON showsize.py .hg/blackbox*
.hg/blackbox.log: < 500
.hg/blackbox.log.1: >= 500
.hg/blackbox.log.2: >= 500
$ cd ..
Jun Wu
blackbox: do not prevent 'chg init' from working...
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
Jun Wu
blackbox: fix rotation with chg...
r34109 #endif
Jun Wu
blackbox: set lastui even if ui.log is not called (issue5518)...
r34277
blackbox should work if repo.ui.log is not called (issue5518)
$ cat > $TESTTMP/raise.py << EOF
> from __future__ import absolute_import
> from mercurial import registrar, scmutil
> cmdtable = {}
> command = registrar.command(cmdtable)
Yuya Nishihara
py3: byte-stringify test-blackbox.t
r36758 > @command(b'raise')
Jun Wu
blackbox: set lastui even if ui.log is not called (issue5518)...
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
1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> ** Unknown exception encountered with possibly-broken third-party extension mock
$ tail -2 .hg/blackbox.log
RuntimeError: raise