Mercurial > hg
changeset 44116:b5aaa09be18c
py3: suppress unraisable exceptions in test-worker.t
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.
Differential Revision: https://phab.mercurial-scm.org/D7949
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 18 Jan 2020 11:13:01 -0800 |
parents | e1b8b4e4f496 |
children | c5e0a9b97b8a |
files | tests/test-worker.t |
diffstat | 1 files changed, 4 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-worker.t Mon Jan 20 18:28:46 2020 -0500 +++ b/tests/test-worker.t Sat Jan 18 11:13:01 2020 -0800 @@ -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()