summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_traceback.py
diff options
context:
space:
mode:
authorAndrew Kuchling <amk@amk.ca>2013-09-15 22:15:56 (GMT)
committerAndrew Kuchling <amk@amk.ca>2013-09-15 22:15:56 (GMT)
commit173a157e725579eec1f28f8c9d53d6761ba6c79f (patch)
tree98be7afea0a4f929f07193d94ffe86cc0e7739e0 /Lib/test/test_traceback.py
parent8408dc581e2baaa306b57f14486cfa013fd68c68 (diff)
downloadcpython-173a157e725579eec1f28f8c9d53d6761ba6c79f.zip
cpython-173a157e725579eec1f28f8c9d53d6761ba6c79f.tar.gz
cpython-173a157e725579eec1f28f8c9d53d6761ba6c79f.tar.bz2
#1565525: Add traceback.clear_frames() helper function to clear locals ref'd by a traceback
Diffstat (limited to 'Lib/test/test_traceback.py')
-rw-r--r--Lib/test/test_traceback.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index 66a12bf..96ef951 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -388,6 +388,36 @@ class CExcReportingTests(BaseExceptionReportingTests, unittest.TestCase):
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__)