Handle --fulltrace with pytest.raises

This changes `_repr_failure_py` to use `tbfilter=False` always.
This commit is contained in:
Daniel Hahler 2019-09-01 19:17:02 +02:00
parent 23102a7d84
commit f832ac3316
3 changed files with 9 additions and 3 deletions

View File

@ -0,0 +1 @@
Handle ``--fulltrace`` correctly with ``pytest.raises``.

View File

@ -245,7 +245,6 @@ class Node:
fm = self.session._fixturemanager fm = self.session._fixturemanager
if excinfo.errisinstance(fm.FixtureLookupError): if excinfo.errisinstance(fm.FixtureLookupError):
return excinfo.value.formatrepr() return excinfo.value.formatrepr()
tbfilter = True
if self.config.getoption("fulltrace", False): if self.config.getoption("fulltrace", False):
style = "long" style = "long"
else: else:
@ -253,7 +252,6 @@ class Node:
self._prunetraceback(excinfo) self._prunetraceback(excinfo)
if len(excinfo.traceback) == 0: if len(excinfo.traceback) == 0:
excinfo.traceback = tb excinfo.traceback = tb
tbfilter = False # prunetraceback already does it
if style == "auto": if style == "auto":
style = "long" style = "long"
# XXX should excinfo.getrepr record all data and toterminal() process it? # XXX should excinfo.getrepr record all data and toterminal() process it?
@ -279,7 +277,7 @@ class Node:
abspath=abspath, abspath=abspath,
showlocals=self.config.getoption("showlocals", False), showlocals=self.config.getoption("showlocals", False),
style=style, style=style,
tbfilter=tbfilter, tbfilter=False, # pruned already, or in --fulltrace mode.
truncate_locals=truncate_locals, truncate_locals=truncate_locals,
) )

View File

@ -399,6 +399,13 @@ def test_match_raises_error(testdir):
result = testdir.runpytest() result = testdir.runpytest()
assert result.ret != 0 assert result.ret != 0
result.stdout.fnmatch_lines(["*AssertionError*Pattern*[123]*not found*"]) result.stdout.fnmatch_lines(["*AssertionError*Pattern*[123]*not found*"])
assert "__tracebackhide__ = True" not in result.stdout.str()
result = testdir.runpytest("--fulltrace")
assert result.ret != 0
result.stdout.fnmatch_lines(
["*__tracebackhide__ = True*", "*AssertionError*Pattern*[123]*not found*"]
)
class TestFormattedExcinfo: class TestFormattedExcinfo: