Skip to content

Commit

Permalink
Fixed issue shadowing error when missing argument on teardown_method
Browse files Browse the repository at this point in the history
When the method argument is missing on teardown_method, the traceback is
100% internal to pytest, which with default options get pruned. Then
that traceback is empty, leading to a new exception as a traceback shall
not be empty.

This PR fixes that issue by pushing back the last stack on the
traceback, when the stacktrace is empty after pruning. Then the output
is still pruned, but gives meaningful information with the item where it
failed on the stack.

* fixes issue #1604

Signed-off-by: Guyzmo <guyzmo+github@m0g.net>
  • Loading branch information
guyzmo committed Jun 11, 2016
1 parent 577cce2 commit fc7c104
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 1 deletion.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,4 @@ Thomas Grainger
Tom Viner
Trevor Bekolay
Wouter van Ackooy
Bernard Pratz
3 changes: 2 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
* Text documents without any doctests no longer appear as "skipped".
Thanks `@graingert`_ for reporting and providing a full PR (`#1580`_).

*
* Fix internal error issue when `method` argument is missing for
`teardown_method`. Fixes (`#1605`).

*

Expand Down
3 changes: 3 additions & 0 deletions _pytest/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,10 @@ def _repr_failure_py(self, excinfo, style=None):
if self.config.option.fulltrace:
style="long"
else:
tb = _pytest._code.Traceback([excinfo.traceback[-1]])
self._prunetraceback(excinfo)
if len(excinfo.traceback) == 0:
excinfo.traceback = tb
tbfilter = False # prunetraceback already does it
if style == "auto":
style = "long"
Expand Down

0 comments on commit fc7c104

Please sign in to comment.