diff Lib/test/test_traceback.py @ 85723:100606ef02cf

#1565525: Add traceback.clear_frames() helper function to clear locals ref'd by a traceback
author Andrew Kuchling <amk@amk.ca>
date Sun, 15 Sep 2013 18:15:56 -0400
parents 862ab99ab570
children
line wrap: on
line diff
--- a/Lib/test/test_traceback.py	Sun Sep 15 14:57:15 2013 -0700
+++ b/Lib/test/test_traceback.py	Sun Sep 15 18:15:56 2013 -0400
@@ -388,6 +388,36 @@
         return s.getvalue()
 
 
+class MiscTracebackCases(unittest.TestCase):
+    #
+    # Check non-printing functions in traceback module
+    #
+
+    def test_clear(self):
+        def outer():
+            middle()
+        def middle():
+            inner()
+        def inner():
+            i = 1
+            1/0
+
+        try:
+            outer()
+        except:
+            type_, value, tb = sys.exc_info()
+
+        # Initial assertion: there's one local in the inner frame.
+        inner_frame = tb.tb_next.tb_next.tb_next.tb_frame
+        self.assertEqual(len(inner_frame.f_locals), 1)
+
+        # Clear traceback frames
+        traceback.clear_frames(tb)
+
+        # Local variable dict should now be empty.
+        self.assertEqual(len(inner_frame.f_locals), 0)
+
+
 def test_main():
     run_unittest(__name__)