mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Issue #13812: When a multiprocessing Process child raises an exception, flush stderr after printing the exception traceback.
This commit is contained in:
parent
9f6b02ecde
commit
84a0fbf6b0
4 changed files with 30 additions and 5 deletions
|
@ -367,6 +367,29 @@ class _TestSubclassingProcess(BaseTestCase):
|
|||
uppercaser.stop()
|
||||
uppercaser.join()
|
||||
|
||||
def test_stderr_flush(self):
|
||||
# sys.stderr is flushed at process shutdown (issue #13812)
|
||||
if self.TYPE == "threads":
|
||||
return
|
||||
|
||||
testfn = test.support.TESTFN
|
||||
self.addCleanup(test.support.unlink, testfn)
|
||||
proc = self.Process(target=self._test_stderr_flush, args=(testfn,))
|
||||
proc.start()
|
||||
proc.join()
|
||||
with open(testfn, 'r') as f:
|
||||
err = f.read()
|
||||
# The whole traceback was printed
|
||||
self.assertIn("ZeroDivisionError", err)
|
||||
self.assertIn("test_multiprocessing.py", err)
|
||||
self.assertIn("1/0 # MARKER", err)
|
||||
|
||||
@classmethod
|
||||
def _test_stderr_flush(cls, testfn):
|
||||
sys.stderr = open(testfn, 'w')
|
||||
1/0 # MARKER
|
||||
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue