summaryrefslogtreecommitdiff
path: root/unit_tests
diff options
context:
space:
mode:
authorSascha Peilicke <saschpe@suse.de>2013-01-18 11:22:06 +0100
committerSascha Peilicke <saschpe@suse.de>2013-01-18 12:19:27 +0100
commitbf4414002390d5926980736e2ce5ea2dafc3ab82 (patch)
tree545c82b97d219453690a2c5f6bacd2663f82535b /unit_tests
parentb6843dff5c04ffbd27b888f3fea11a435e5ddb7b (diff)
downloadnose-bf4414002390d5926980736e2ce5ea2dafc3ab82.tar.gz
Fix formatFailure expection if missing tb in exc_info
The FailureDetail plugin should not fail in formatFailure if no traceback is in the exc_info tupple ('err' parameter). This happens, e.g. when used with testtools: Traceback (most recent call last): File "/usr/lib64/python2.6/site-packages/nose/case.py", line 133, in run self.runTest(result) File "/usr/lib64/python2.6/site-packages/nose/case.py", line 151, in runTest test(result) File "/usr/lib64/python2.6/unittest.py", line 300, in __call__ return self.run(*args, **kwds) File "/usr/lib64/python2.6/site-packages/testtools/testcase.py", line 518, in run return self.__RunTest(self, self.exception_handlers).run(result) File "/usr/lib64/python2.6/site-packages/testtools/runtest.py", line 74, in run return self._run_one(actual_result) File "/usr/lib64/python2.6/site-packages/testtools/runtest.py", line 88, in _run_one return self._run_prepared_result(ExtendedToOriginalDecorator(result)) File "/usr/lib64/python2.6/site-packages/testtools/runtest.py", line 107, in _run_prepared_result handler(self.case, self.result, e) File "/usr/lib64/python2.6/site-packages/testtools/testcase.py", line 494, in _report_failure result.addFailure(self, details=self.getDetails()) File "/usr/lib64/python2.6/site-packages/testtools/testresult/real.py", line 605, in addFailure return self.decorated.addFailure(test, err) File "/usr/lib64/python2.6/site-packages/nose/proxy.py", line 146, in addFailure formatted = plugins.formatFailure(self.test, err) File "/usr/lib64/python2.6/site-packages/nose/plugins/manager.py", line 99, in __call__ return self.call(*arg, **kw) File "/usr/lib64/python2.6/site-packages/nose/plugins/manager.py", line 141, in chain result = meth(*arg, **kw) File "/usr/lib64/python2.6/site-packages/nose/plugins/failuredetail.py", line 41, in formatFailure tbinfo = inspect_traceback(tb) File "/usr/lib64/python2.6/site-packages/nose/inspector.py", line 26, in inspect_traceback while tb.tb_next: AttributeError: 'NoneType' object has no attribute 'tb_next'
Diffstat (limited to 'unit_tests')
-rw-r--r--unit_tests/test_plugins.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/unit_tests/test_plugins.py b/unit_tests/test_plugins.py
index 95c3e61..b4f91c8 100644
--- a/unit_tests/test_plugins.py
+++ b/unit_tests/test_plugins.py
@@ -14,6 +14,7 @@ from nose.plugins.attrib import AttributeSelector
from nose.plugins.base import Plugin
from nose.plugins.cover import Coverage
from nose.plugins.doctests import Doctest
+from nose.plugins.failuredetail import FailureDetail
from nose.plugins.prof import Profile
from mock import *
@@ -352,6 +353,28 @@ class TestAttribPlugin(unittest.TestCase):
assert not plug.wantFunction(f4)
+class TestFailureDetailPlugin(unittest.TestCase):
+
+ def test_formatFailure(self):
+ class DummyError(Exception):
+ pass
+
+ try:
+ raise DummyError
+ except DummyError:
+ exc_info = sys.exc_info()
+
+ plug = FailureDetail()
+ (ec, ev, tb) = plug.formatFailure(self, exc_info)
+ assert exc_info[0] is ec
+ assert exc_info[2] is tb
+ assert self.tbinfo is not None
+
+ exc_info = (exc_info[0], exc_info[1], None) # Try without traceback
+ (ec, ev, tb) = plug.formatFailure(self, exc_info)
+ assert self.tbinfo is None
+
+
class TestProfPlugin(unittest.TestCase):
def setUp(self):