diff options
author | Georg Brandl <georg@python.org> | 2009-04-05 14:28:42 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2009-04-05 14:28:42 (GMT) |
commit | 236f7979ba99430710bc249446a343195e252010 (patch) | |
tree | e8a64807b3805cdf586a7793c78660b18ac0f78d /Lib | |
parent | dfd734429ec24b6d55b11f48afe4a9bc8f3db730 (diff) | |
download | cpython-236f7979ba99430710bc249446a343195e252010.zip cpython-236f7979ba99430710bc249446a343195e252010.tar.gz cpython-236f7979ba99430710bc249446a343195e252010.tar.bz2 |
Merged revisions 71237-71238 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r71237 | georg.brandl | 2009-04-05 16:24:52 +0200 (So, 05 Apr 2009) | 1 line
#1326077: fix traceback formatting of SyntaxErrors. This fixes two differences with formatting coming from Python: a) the reproduction of location details in the error message if no line text is given, b) the prefixing of the last line by one space.
........
r71238 | georg.brandl | 2009-04-05 16:25:41 +0200 (So, 05 Apr 2009) | 1 line
Add NEWS entry for r71237.
........
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_traceback.py | 29 | ||||
-rw-r--r-- | Lib/traceback.py | 7 |
2 files changed, 20 insertions, 16 deletions
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index c44e2b1..64dc748 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -10,16 +10,6 @@ from test.support import TESTFN, unlink import traceback -try: - raise KeyError -except KeyError: - type_, value, tb = sys.exc_info() - file_ = StringIO() - traceback_print(tb, file_) - example_traceback = file_.getvalue() -else: - raise Error("unable to create test traceback string") - class SyntaxTracebackCases(unittest.TestCase): # For now, a very minimal set of tests. I want to be sure that @@ -158,9 +148,24 @@ class SyntaxTracebackCases(unittest.TestCase): class TracebackFormatTests(unittest.TestCase): - def test_traceback_indentation(self): + def test_traceback_format(self): + try: + raise KeyError('blah') + except KeyError: + type_, value, tb = sys.exc_info() + traceback_fmt = 'Traceback (most recent call last):\n' + \ + ''.join(traceback.format_tb(tb)) + file_ = StringIO() + traceback_print(tb, file_) + python_fmt = file_.getvalue() + else: + raise Error("unable to create test traceback string") + + # Make sure that Python and the traceback module format the same thing + self.assertEquals(traceback_fmt, python_fmt) + # Make sure that the traceback is properly indented. - tb_lines = example_traceback.splitlines() + tb_lines = python_fmt.splitlines() self.assertEquals(len(tb_lines), 3) banner, location, source_line = tb_lines self.assert_(banner.startswith('Traceback')) diff --git a/Lib/traceback.py b/Lib/traceback.py index cb913ee..571ff57 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -63,7 +63,7 @@ def print_tb(tb, limit=None, file=None): filename = co.co_filename name = co.co_name _print(file, - ' File "%s", line %d, in %s' % (filename,lineno,name)) + ' File "%s", line %d, in %s' % (filename, lineno, name)) linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) if line: _print(file, ' ' + line.strip()) @@ -159,9 +159,8 @@ def print_exception(etype, value, tb, limit=None, file=None, chain=True): _print(file, 'Traceback (most recent call last):') print_tb(tb, limit, file) lines = format_exception_only(type(value), value) - for line in lines[:-1]: - _print(file, line, ' ') - _print(file, lines[-1], '') + for line in lines: + _print(file, line, '') def format_exception(etype, value, tb, limit=None, chain=True): """Format a stack trace and the exception information. |