D7949: py3: suppress unraisable exceptions in test-worker.t
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Sat Jan 18 21:18:58 UTC 2020
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Python 3.8 calls sys.unraisablehook when an unraisable
exception is encountered. The default behavior is to print a
warning.
test-worker.t was triggering this hook due to a race between
a newly forked process exiting and that process's
_os.register_at_fork handlers running. I was seeing the
stdlib's random module in the stack re-seeding itself. Although
there could be other after-fork handlers in the mix.
This commit defines sys.unraisablehook to effectively no-op.
This suppresses the warning and makes test output on Python 3.8
consistent with prior versions. test-worker.t now passes on
Python 3.8.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D7949
AFFECTED FILES
tests/test-worker.t
CHANGE DETAILS
diff --git a/tests/test-worker.t b/tests/test-worker.t
--- a/tests/test-worker.t
+++ b/tests/test-worker.t
@@ -2,6 +2,7 @@
$ cat > t.py <<EOF
> from __future__ import absolute_import, print_function
+ > import sys
> import time
> from mercurial import (
> error,
@@ -9,6 +10,7 @@
> ui as uimod,
> worker,
> )
+ > sys.unraisablehook = lambda x: None
> def abort(ui, args):
> if args[0] == 0:
> # by first worker for test stability
@@ -101,7 +103,9 @@
> from __future__ import absolute_import
> import atexit
> import os
+ > import sys
> import time
+ > sys.unraisablehook = lambda x: None
> oldfork = os.fork
> count = 0
> parentpid = os.getpid()
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list