diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2015-09-18 07:04:47 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-09-18 07:04:47 (GMT) |
commit | e953ba794cf172237e1101fed24f326b66e9fa9a (patch) | |
tree | 15869c1456201bcca62af191822818903258bc33 /Lib/test | |
parent | 7b51a55ecdd67df5ed9191048d6c1e500fc3f586 (diff) | |
download | cpython-e953ba794cf172237e1101fed24f326b66e9fa9a.zip cpython-e953ba794cf172237e1101fed24f326b66e9fa9a.tar.gz cpython-e953ba794cf172237e1101fed24f326b66e9fa9a.tar.bz2 |
Issue #25108: Omitted internal frames in traceback functions print_stack(),
format_stack(), and extract_stack() called without arguments.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_traceback.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 641a2df..0362504 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -289,6 +289,31 @@ class TracebackFormatTests(unittest.TestCase): self.assertEqual(ststderr.getvalue(), "".join(stfmt)) + def test_print_stack(self): + def prn(): + traceback.print_stack() + with captured_output("stderr") as stderr: + prn() + lineno = prn.__code__.co_firstlineno + self.assertEqual(stderr.getvalue().splitlines()[-4:], [ + ' File "%s", line %d, in test_print_stack' % (__file__, lineno+3), + ' prn()', + ' File "%s", line %d, in prn' % (__file__, lineno+1), + ' traceback.print_stack()', + ]) + + def test_format_stack(self): + def fmt(): + return traceback.format_stack() + result = fmt() + lineno = fmt.__code__.co_firstlineno + self.assertEqual(result[-2:], [ + ' File "%s", line %d, in test_format_stack\n' + ' result = fmt()\n' % (__file__, lineno+2), + ' File "%s", line %d, in fmt\n' + ' return traceback.format_stack()\n' % (__file__, lineno+1), + ]) + cause_message = ( "\nThe above exception was the direct cause " @@ -610,6 +635,16 @@ class MiscTracebackCases(unittest.TestCase): # Local variable dict should now be empty. self.assertEqual(len(inner_frame.f_locals), 0) + def test_extract_stack(self): + def extract(): + return traceback.extract_stack() + result = extract() + lineno = extract.__code__.co_firstlineno + self.assertEqual([tuple(x) for x in result[-2:]], [ + (__file__, lineno+2, 'test_extract_stack', 'result = extract()'), + (__file__, lineno+1, 'extract', 'return traceback.extract_stack()'), + ]) + class TestFrame(unittest.TestCase): |