also accept non-pytrace pytest.fail() call in setup/teardown methods

This commit is contained in:
holger krekel 2010-11-24 16:43:55 +01:00
parent c36b20b137
commit 539f828cdd
2 changed files with 8 additions and 4 deletions

View File

@ -324,14 +324,14 @@ class FunctionMixin(PyobjMixin):
if line.strip().startswith('def'):
return FuncargLookupErrorRepr(fspath, lineno,
lines[:i+1], str(excinfo.value))
if excinfo.errisinstance(pytest.fail.Exception):
if not excinfo.value.pytrace:
return str(excinfo.value)
return super(FunctionMixin, self)._repr_failure_py(excinfo,
style=style)
def repr_failure(self, excinfo, outerr=None):
assert outerr is None, "XXX outerr usage is deprecated"
if excinfo.errisinstance(pytest.fail.Exception):
if not excinfo.value.pytrace:
return str(excinfo.value)
return self._repr_failure_py(excinfo,
style=self.config.option.tbstyle)

View File

@ -339,11 +339,15 @@ def test_pytest_fail_notrace(testdir):
import pytest
def test_hello():
pytest.fail("hello", pytrace=False)
def teardown_function(function):
pytest.fail("world", pytrace=False)
""")
result = testdir.runpytest()
result.stdout.fnmatch_lines([
"hello"
"world",
"hello",
])
assert 'def teardown_function' not in result.stdout.str()
def test_exception_printing_skip():
try: