changeset: 98031:9f57c937958f branch: 3.4 parent: 98025:ce595a047bd9 user: Serhiy Storchaka date: Fri Sep 18 10:07:18 2015 +0300 files: Lib/test/test_traceback.py description: Issue #25108: Backported tests for traceback functions print_stack(), format_stack(), and extract_stack() called without arguments. diff -r ce595a047bd9 -r 9f57c937958f Lib/test/test_traceback.py --- a/Lib/test/test_traceback.py Thu Sep 17 22:20:41 2015 -0700 +++ b/Lib/test/test_traceback.py Fri Sep 18 10:07:18 2015 +0300 @@ -242,6 +242,31 @@ 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 " @@ -443,6 +468,16 @@ # 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(result[-2:], [ + (__file__, lineno+2, 'test_extract_stack', 'result = extract()'), + (__file__, lineno+1, 'extract', 'return traceback.extract_stack()'), + ]) + def test_main(): run_unittest(__name__)