[Python-checkins] cpython: PyErr_Print can leave sys.last_traceback hanging around; kill it

benjamin.peterson python-checkins at python.org
Tue Mar 15 21:54:56 CET 2011


http://hg.python.org/cpython/rev/27e0091b2ce1
changeset:   68553:27e0091b2ce1
user:        Benjamin Peterson <benjamin at python.org>
date:        Tue Mar 15 15:54:50 2011 -0500
summary:
  PyErr_Print can leave sys.last_traceback hanging around; kill it

files:
  Lib/test/test_dis.py

diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py
--- a/Lib/test/test_dis.py
+++ b/Lib/test/test_dis.py
@@ -265,28 +265,26 @@
         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)

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list