Mercurial > cpython-lru_cache-weakref
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__)
