##// END OF EJS Templates
revlog: extract function for getting node from known-to-exist rev...
revlog: extract function for getting node from known-to-exist rev Many of the calls to index_node() (which converts a rev to a nodeid) are done with a rev that's know to exist. If the function fails, there's something really wrong and we should just abort. This was done in only one place. This patch starts by extracting that code to a function that we can reuse in later patches. Differential Revision: https://phab.mercurial-scm.org/D3456

File last commit:

r37525:9b16a67c default
r37877:a91f31a1 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