Commit 7e32f3a4 authored by Victor Stinner's avatar Victor Stinner

Issue #12400: fix test_faulthandler if regrtest captures sys.stderr

faulthandler.enable() requires that sys.stderr has a fileno() method.
parent 0b8f0c27
from contextlib import contextmanager from contextlib import contextmanager
import datetime import datetime
import faulthandler import faulthandler
import os
import re import re
import signal import signal
import subprocess import subprocess
...@@ -230,6 +231,15 @@ faulthandler._read_null() ...@@ -230,6 +231,15 @@ faulthandler._read_null()
self.assertNotEqual(exitcode, 0) self.assertNotEqual(exitcode, 0)
def test_is_enabled(self): def test_is_enabled(self):
null_stderr = None
orig_stderr = sys.stderr
try:
# regrtest may replace sys.stderr by io.StringIO object, but
# faulthandler.enable() requires that sys.stderr has a fileno()
# method
null_stderr = open(os.devnull, 'w')
sys.stderr = null_stderr
was_enabled = faulthandler.is_enabled() was_enabled = faulthandler.is_enabled()
try: try:
faulthandler.enable() faulthandler.enable()
...@@ -241,6 +251,10 @@ faulthandler._read_null() ...@@ -241,6 +251,10 @@ faulthandler._read_null()
faulthandler.enable() faulthandler.enable()
else: else:
faulthandler.disable() faulthandler.disable()
finally:
sys.stderr = orig_stderr
if null_stderr is not None:
null_stderr.close()
def check_dump_traceback(self, filename): def check_dump_traceback(self, filename):
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment