# HG changeset patch # User Gregory Szorc # Date 1579374781 28800 # Node ID b5aaa09be18c1c1941b59305b48c53fbecadf388 # Parent e1b8b4e4f496f881f1fd68f76fbd6f6d9e04348a 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 diff -r e1b8b4e4f496 -r b5aaa09be18c tests/test-worker.t --- 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 < 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()