mirror of https://github.com/python/cpython
Rolled back revisions 71237 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
This commit is contained in:
parent
cfbb18f149
commit
32b18cc2cf
|
@ -8,6 +8,16 @@ from test.test_support import run_unittest, is_jython, Error
|
||||||
|
|
||||||
import traceback
|
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 TracebackCases(unittest.TestCase):
|
class TracebackCases(unittest.TestCase):
|
||||||
# For now, a very minimal set of tests. I want to be sure that
|
# For now, a very minimal set of tests. I want to be sure that
|
||||||
|
@ -152,24 +162,9 @@ def test():
|
||||||
|
|
||||||
class TracebackFormatTests(unittest.TestCase):
|
class TracebackFormatTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_traceback_format(self):
|
def test_traceback_indentation(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.
|
# Make sure that the traceback is properly indented.
|
||||||
tb_lines = python_fmt.splitlines()
|
tb_lines = example_traceback.splitlines()
|
||||||
self.assertEquals(len(tb_lines), 3)
|
self.assertEquals(len(tb_lines), 3)
|
||||||
banner, location, source_line = tb_lines
|
banner, location, source_line = tb_lines
|
||||||
self.assert_(banner.startswith('Traceback'))
|
self.assert_(banner.startswith('Traceback'))
|
||||||
|
|
|
@ -64,7 +64,7 @@ def print_tb(tb, limit=None, file=None):
|
||||||
filename = co.co_filename
|
filename = co.co_filename
|
||||||
name = co.co_name
|
name = co.co_name
|
||||||
_print(file,
|
_print(file,
|
||||||
' File "%s", line %d, in %s' % (filename, lineno, name))
|
' File "%s", line %d, in %s' % (filename,lineno,name))
|
||||||
linecache.checkcache(filename)
|
linecache.checkcache(filename)
|
||||||
line = linecache.getline(filename, lineno, f.f_globals)
|
line = linecache.getline(filename, lineno, f.f_globals)
|
||||||
if line: _print(file, ' ' + line.strip())
|
if line: _print(file, ' ' + line.strip())
|
||||||
|
@ -124,8 +124,9 @@ def print_exception(etype, value, tb, limit=None, file=None):
|
||||||
_print(file, 'Traceback (most recent call last):')
|
_print(file, 'Traceback (most recent call last):')
|
||||||
print_tb(tb, limit, file)
|
print_tb(tb, limit, file)
|
||||||
lines = format_exception_only(etype, value)
|
lines = format_exception_only(etype, value)
|
||||||
for line in lines:
|
for line in lines[:-1]:
|
||||||
_print(file, line, '')
|
_print(file, line, ' ')
|
||||||
|
_print(file, lines[-1], '')
|
||||||
|
|
||||||
def format_exception(etype, value, tb, limit = None):
|
def format_exception(etype, value, tb, limit = None):
|
||||||
"""Format a stack trace and the exception information.
|
"""Format a stack trace and the exception information.
|
||||||
|
@ -194,7 +195,7 @@ def format_exception_only(etype, value):
|
||||||
caretspace = ((c.isspace() and c or ' ') for c in caretspace)
|
caretspace = ((c.isspace() and c or ' ') for c in caretspace)
|
||||||
# only three spaces to account for offset1 == pos 0
|
# only three spaces to account for offset1 == pos 0
|
||||||
lines.append(' %s^\n' % ''.join(caretspace))
|
lines.append(' %s^\n' % ''.join(caretspace))
|
||||||
value = msg
|
value = msg
|
||||||
|
|
||||||
lines.append(_format_final_exc_line(stype, value))
|
lines.append(_format_final_exc_line(stype, value))
|
||||||
return lines
|
return lines
|
||||||
|
|
Loading…
Reference in New Issue