mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-42308: Add threading.__excepthook__ (GH-23218)
Add threading.__excepthook__ to allow retrieving the original value of threading.excepthook in case it is set to a broken or a different value.
This commit is contained in:
parent
b5cc05bbe6
commit
750c5abf43
5 changed files with 40 additions and 0 deletions
|
@ -1352,6 +1352,27 @@ class ExceptHookTests(BaseTestCase):
|
|||
'Exception in threading.excepthook:\n')
|
||||
self.assertEqual(err_str, 'threading_hook failed')
|
||||
|
||||
def test_original_excepthook(self):
|
||||
def run_thread():
|
||||
with support.captured_output("stderr") as output:
|
||||
thread = ThreadRunFail(name="excepthook thread")
|
||||
thread.start()
|
||||
thread.join()
|
||||
return output.getvalue()
|
||||
|
||||
def threading_hook(args):
|
||||
print("Running a thread failed", file=sys.stderr)
|
||||
|
||||
default_output = run_thread()
|
||||
with support.swap_attr(threading, 'excepthook', threading_hook):
|
||||
custom_hook_output = run_thread()
|
||||
threading.excepthook = threading.__excepthook__
|
||||
recovered_output = run_thread()
|
||||
|
||||
self.assertEqual(default_output, recovered_output)
|
||||
self.assertNotEqual(default_output, custom_hook_output)
|
||||
self.assertEqual(custom_hook_output, "Running a thread failed\n")
|
||||
|
||||
|
||||
class TimerTests(BaseTestCase):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue