[Checkins] SVN: zope.exceptions/branches/tseaver-no_2to3/src/zope/exceptions/tests/test_exceptionformatter.py Complete coverage for z.e.exceptionformatter.TextExceptionFormatter.
Tres Seaver
cvs-admin at zope.org
Fri Apr 6 19:36:42 UTC 2012
Log message for revision 125024:
Complete coverage for z.e.exceptionformatter.TextExceptionFormatter.
Changed:
U zope.exceptions/branches/tseaver-no_2to3/src/zope/exceptions/tests/test_exceptionformatter.py
-=-
Modified: zope.exceptions/branches/tseaver-no_2to3/src/zope/exceptions/tests/test_exceptionformatter.py
===================================================================
--- zope.exceptions/branches/tseaver-no_2to3/src/zope/exceptions/tests/test_exceptionformatter.py 2012-04-06 19:36:35 UTC (rev 125023)
+++ zope.exceptions/branches/tseaver-no_2to3/src/zope/exceptions/tests/test_exceptionformatter.py 2012-04-06 19:36:38 UTC (rev 125024)
@@ -244,7 +244,128 @@
self.assertEqual(len(lines), 2)
self.assertEqual(lines[1], ' - __traceback_info__: %s' % INFO_T)
+ def test_formatExceptionOnly(self):
+ import traceback
+ fmt = self._makeOne()
+ err = ValueError('testing')
+ self.assertEqual(fmt.formatExceptionOnly(ValueError, err),
+ ''.join(
+ traceback.format_exception_only(ValueError, err)))
+ def test_formatLastLine(self):
+ fmt = self._makeOne()
+ self.assertEqual(fmt.formatLastLine('XXX'), 'XXX')
+
+ def test_formatException_empty_tb_stack(self):
+ import traceback
+ fmt = self._makeOne()
+ err = ValueError('testing')
+ lines = fmt.formatException(ValueError, err, None)
+ self.assertEqual(len(lines), 2)
+ self.assertEqual(lines[0], 'Traceback (most recent call last):\n')
+ self.assertEqual(lines[1],
+ ''.join(
+ traceback.format_exception_only(ValueError, err)))
+
+ def test_formatException_non_empty_tb_stack(self):
+ import traceback
+ fmt = self._makeOne()
+ err = ValueError('testing')
+ tb = DummyTB()
+ tb.tb_frame = DummyFrame()
+ lines = fmt.formatException(ValueError, err, tb)
+ self.assertEqual(len(lines), 3)
+ self.assertEqual(lines[0], 'Traceback (most recent call last):\n')
+ self.assertEqual(lines[1], ' Module dummy/filename.py, line 14, '
+ 'in dummy_function\n')
+ self.assertEqual(lines[2],
+ ''.join(
+ traceback.format_exception_only(ValueError, err)))
+
+ def test_formatException_deep_tb_stack_with_limit(self):
+ import traceback
+ fmt = self._makeOne(limit=1)
+ err = ValueError('testing')
+ tb0 = DummyTB()
+ tb0.tb_lineno = 27
+ tb0.tb_frame = DummyFrame()
+ tb = DummyTB()
+ tb.tb_frame = DummyFrame()
+ tb.tb_next = tb0
+ lines = fmt.formatException(ValueError, err, tb)
+ self.assertEqual(len(lines), 3)
+ self.assertEqual(lines[0], 'Traceback (most recent call last):\n')
+ self.assertEqual(lines[1], ' Module dummy/filename.py, line 14, '
+ 'in dummy_function\n')
+ self.assertEqual(lines[2],
+ ''.join(
+ traceback.format_exception_only(ValueError, err)))
+
+ def test_formatException_recursion_in_tb_stack(self):
+ import traceback
+ fmt = self._makeOne()
+ err = ValueError('testing')
+ tb_recurse = DummyTB()
+ tb_recurse.tb_lineno = 27
+ r_f = tb_recurse.tb_frame = DummyFrame()
+ r_f.f_lineno = 27
+ r_f.f_locals['__exception_formatter__'] = 1
+ tb = DummyTB()
+ tb.tb_frame = DummyFrame()
+ tb.tb_next = tb_recurse
+ lines = fmt.formatException(ValueError, err, tb)
+ self.assertEqual(len(lines), 5)
+ self.assertEqual(lines[0], 'Traceback (most recent call last):\n')
+ self.assertEqual(lines[1], ' Module dummy/filename.py, line 14, '
+ 'in dummy_function\n')
+ self.assertEqual(lines[2], '(Recursive formatException() stopped, '
+ 'trying traceback.format_tb)\n')
+ self.assertEqual(lines[3], ' File "dummy/filename.py", line 27, '
+ 'in dummy_function\n')
+ self.assertEqual(lines[4],
+ ''.join(
+ traceback.format_exception_only(ValueError, err)))
+
+ def test_extractStack_wo_frame(self):
+ import sys
+ fmt = self._makeOne(limit=1)
+ f = sys._getframe(); lineno = f.f_lineno
+ lines = fmt.extractStack()
+ self.assertEqual(len(lines), 1)
+ self.assertEqual(lines[0], ' Module '
+ 'zope.exceptions.tests.test_exceptionformatter, '
+ 'line %d, in test_extractStack_wo_frame\n'
+ ' lines = fmt.extractStack()\n' % (lineno + 1))
+
+ def test_extractStack_w_single_frame(self):
+ fmt = self._makeOne()
+ f = DummyFrame()
+ lines = fmt.extractStack(f)
+ self.assertEqual(len(lines), 1)
+ self.assertEqual(lines[0], ' Module dummy/filename.py, line 137, '
+ 'in dummy_function\n')
+
+ def test_extractStack_w_multiple_frames_and_limit(self):
+ fmt = self._makeOne(limit=1)
+ f0 = DummyFrame()
+ f0.f_lineno = 213
+ f = DummyFrame()
+ f.f_back = f0
+ lines = fmt.extractStack(f)
+ self.assertEqual(len(lines), 1)
+ self.assertEqual(lines[0], ' Module dummy/filename.py, line 137, '
+ 'in dummy_function\n')
+
+ def test_extractStack_w_recursive_frames_and_limit(self):
+ fmt = self._makeOne(limit=1)
+ f = DummyFrame()
+ f.f_back = f
+ lines = fmt.extractStack(f)
+ self.assertEqual(len(lines), 1)
+ self.assertEqual(lines[0], ' Module dummy/filename.py, line 137, '
+ 'in dummy_function\n')
+
+
class Test_format_exception(unittest.TestCase):
def _callFUT(self, as_html=False):
@@ -506,10 +627,12 @@
class DummyTB(object):
tb_lineno = 14
+ tb_next = None
class DummyFrame(object):
f_lineno = 137
+ f_back = None
def __init__(self):
self.f_locals = {}
self.f_globals = {}
More information about the checkins
mailing list