Skip to content

Commit

Permalink
Raise unexpected exceptions with pytest.raises() using match=
Browse files Browse the repository at this point in the history
  • Loading branch information
The-Compiler committed Feb 15, 2018
1 parent 9849022 commit 3cbf0c8
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 2 deletions.
2 changes: 1 addition & 1 deletion _pytest/python_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,6 @@ def __exit__(self, *tp):
suppress_exception = issubclass(self.excinfo.type, self.expected_exception)
if sys.version_info[0] == 2 and suppress_exception:
sys.exc_clear()
if self.match_expr:
if self.match_expr and suppress_exception:
self.excinfo.match(self.match_expr)
return suppress_exception
1 change: 1 addition & 0 deletions changelog/3222.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Errors shown when a ``pytest.raises()`` with ``match=`` fails are now cleaner on what happened: When no exception was raised, the "matching '...'" part got removed as it falsely implies that an exception was raised but it didn't match. When a wrong exception was raised, it's now thrown (like ``pytest.raised()`` without ``match=`` would) instead of complaining about the unmatched text.
1 change: 0 additions & 1 deletion changelog/3222.trivial

This file was deleted.

10 changes: 10 additions & 0 deletions testing/python/raises.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,13 @@ def test_raises_match(self):
with pytest.raises(AssertionError, match=expr):
with pytest.raises(ValueError, match=msg):
int('asdf', base=10)

def test_raises_match_wrong_type(self):
"""Raising an exception with the wrong type and match= given.
pytest should throw the unexpected exception - the pattern match is not
really relevant if we got a different exception.
"""
with pytest.raises(ValueError):
with pytest.raises(IndexError, match='nomatch'):
int('asdf')

0 comments on commit 3cbf0c8

Please sign in to comment.