]> granicus.if.org Git - python/commitdiff
Reset original sys.stdout, stderr and displayhook even in the case of an error
authorChristian Heimes <christian@cheimes.de>
Wed, 7 Nov 2007 16:14:12 +0000 (16:14 +0000)
committerChristian Heimes <christian@cheimes.de>
Wed, 7 Nov 2007 16:14:12 +0000 (16:14 +0000)
Lib/test/test_sys.py

index ad7082eae3fbf4c94f939fca372e553c1f2ddfb9..dfad1727e2b2efc80437c86d783509ff18649e0d 100644 (file)
@@ -4,9 +4,18 @@ import sys, io
 
 class SysModuleTest(unittest.TestCase):
 
+    def setUp(self):
+        self.orig_stdout = sys.stdout
+        self.orig_stderr = sys.stderr
+        self.orig_displayhook = sys.displayhook
+
+    def tearDown(self):
+        sys.stdout = self.orig_stdout
+        sys.stderr = self.orig_stderr
+        sys.displayhook = self.orig_displayhook
+
     def test_original_displayhook(self):
         import __builtin__
-        savestdout = sys.stdout
         out = io.StringIO()
         sys.stdout = out
 
@@ -26,26 +35,19 @@ class SysModuleTest(unittest.TestCase):
         del sys.stdout
         self.assertRaises(RuntimeError, dh, 42)
 
-        sys.stdout = savestdout
-
     def test_lost_displayhook(self):
-        olddisplayhook = sys.displayhook
         del sys.displayhook
         code = compile("42", "<string>", "single")
         self.assertRaises(RuntimeError, eval, code)
-        sys.displayhook = olddisplayhook
 
     def test_custom_displayhook(self):
-        olddisplayhook = sys.displayhook
         def baddisplayhook(obj):
             raise ValueError
         sys.displayhook = baddisplayhook
         code = compile("42", "<string>", "single")
         self.assertRaises(ValueError, eval, code)
-        sys.displayhook = olddisplayhook
 
     def test_original_excepthook(self):
-        savestderr = sys.stderr
         err = io.StringIO()
         sys.stderr = err
 
@@ -57,7 +59,6 @@ class SysModuleTest(unittest.TestCase):
         except ValueError as exc:
             eh(*sys.exc_info())
 
-        sys.stderr = savestderr
         self.assert_(err.getvalue().endswith("ValueError: 42\n"))
 
     # FIXME: testing the code for a lost or replaced excepthook in