[Python-checkins] cpython: Issue #12400: fix test_faulthandler if regrtest captures sys.stderr

victor.stinner python-checkins at python.org
Wed Jun 29 13:43:48 CEST 2011


http://hg.python.org/cpython/rev/80c7d63325f6
changeset: 71065:80c7d63325f6
user: Victor Stinner <victor.stinner at haypocalc.com>
date: Wed Jun 29 13:44:05 2011 +0200
summary:
 Issue #12400: fix test_faulthandler if regrtest captures sys.stderr
faulthandler.enable() requires that sys.stderr has a fileno() method.
files:
 Lib/test/test_faulthandler.py | 32 ++++++++++++++++------
 1 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py
--- a/Lib/test/test_faulthandler.py
+++ b/Lib/test/test_faulthandler.py
@@ -1,6 +1,7 @@
 from contextlib import contextmanager
 import datetime
 import faulthandler
+import os
 import re
 import signal
 import subprocess
@@ -230,17 +231,30 @@
 self.assertNotEqual(exitcode, 0)
 
 def test_is_enabled(self):
- was_enabled = faulthandler.is_enabled()
+ null_stderr = None
+ orig_stderr = sys.stderr
 try:
- faulthandler.enable()
- self.assertTrue(faulthandler.is_enabled())
- faulthandler.disable()
- self.assertFalse(faulthandler.is_enabled())
+ # 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()
+ try:
+ faulthandler.enable()
+ self.assertTrue(faulthandler.is_enabled())
+ faulthandler.disable()
+ self.assertFalse(faulthandler.is_enabled())
+ finally:
+ if was_enabled:
+ faulthandler.enable()
+ else:
+ faulthandler.disable()
 finally:
- if was_enabled:
- faulthandler.enable()
- else:
- faulthandler.disable()
+ sys.stderr = orig_stderr
+ if null_stderr is not None:
+ null_stderr.close()
 
 def check_dump_traceback(self, filename):
 """
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /