Improve quoting in raises match failure message

This commit is contained in:
Anthony Sottile 2019-07-04 05:55:26 -07:00
parent b08ae4449b
commit caa08ebd45
3 changed files with 10 additions and 2 deletions

View File

@ -0,0 +1 @@
Improve quoting in ``raises`` match failure message.

View File

@ -544,7 +544,7 @@ class ExceptionInfo:
"""
__tracebackhide__ = True
if not re.search(regexp, str(self.value)):
assert 0, "Pattern '{!s}' not found in '{!s}'".format(regexp, self.value)
assert 0, "Pattern {!r} not found in {!r}".format(regexp, str(self.value))
return True

View File

@ -220,13 +220,20 @@ class TestRaises:
int("asdf")
msg = "with base 16"
expr = r"Pattern '{}' not found in 'invalid literal for int\(\) with base 10: 'asdf''".format(
expr = r"Pattern '{}' not found in \"invalid literal for int\(\) with base 10: 'asdf'\"".format(
msg
)
with pytest.raises(AssertionError, match=expr):
with pytest.raises(ValueError, match=msg):
int("asdf", base=10)
def test_match_failure_string_quoting(self):
with pytest.raises(AssertionError) as excinfo:
with pytest.raises(AssertionError, match="'foo"):
raise AssertionError("'bar")
msg, = excinfo.value.args
assert msg == 'Pattern "\'foo" not found in "\'bar"'
def test_raises_match_wrong_type(self):
"""Raising an exception with the wrong type and match= given.