]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
PyErr_Print can leave sys.last_traceback hanging around; kill it
authorBenjamin Peterson <benjamin@python.org>
Tue, 15 Mar 2011 20:54:50 +0000 (15:54 -0500)
committerBenjamin Peterson <benjamin@python.org>
Tue, 15 Mar 2011 20:54:50 +0000 (15:54 -0500)
Lib/test/test_dis.py

index 7cda0dced9af4121d36311b2ae564fcb593a00ea..643e2e66ebe788cad1f27ae174db3b6da0221d95 100644 (file)
@@ -265,28 +265,26 @@ class DisTests(unittest.TestCase):
         self.do_disassembly_test(method_bytecode, dis_c_instance_method_bytes)
 
     def test_dis_none(self):
+        try:
+            del sys.last_traceback
+        except AttributeError:
+            pass
         self.assertRaises(RuntimeError, dis.dis, None)
 
     def test_dis_object(self):
         self.assertRaises(TypeError, dis.dis, object())
 
     def test_dis_traceback(self):
-        not_defined = object()
-        tb = None
-        old = getattr(sys, 'last_traceback', not_defined)
-
-        def cleanup():
-            if old is not not_defined:
-                sys.last_traceback = old
-            else:
-                del sys.last_traceback
+        try:
+            del sys.last_traceback
+        except AttributeError:
+            pass
 
         try:
             1/0
         except Exception as e:
             tb = e.__traceback__
             sys.last_traceback = tb
-            self.addCleanup(cleanup)
 
         tb_dis = self.get_disassemble_as_string(tb.tb_frame.f_code, tb.tb_lasti)
         self.do_disassembly_test(None, tb_dis)