Merge pull request #11991 from bluetech/warns-fix
recwarn: fix pytest.warns handling of Warnings with multiple arguments
This commit is contained in:
commit
fbe18fc7a9
|
@ -0,0 +1 @@
|
|||
Fix regression with :func:`pytest.warns` using custom warning subclasses which have more than one parameter in their `__init__`.
|
|
@ -334,10 +334,10 @@ class WarningsChecker(WarningsRecorder):
|
|||
for w in self:
|
||||
if not self.matches(w):
|
||||
warnings.warn_explicit(
|
||||
str(w.message),
|
||||
w.message.__class__, # type: ignore[arg-type]
|
||||
w.filename,
|
||||
w.lineno,
|
||||
message=w.message,
|
||||
category=w.category,
|
||||
filename=w.filename,
|
||||
lineno=w.lineno,
|
||||
module=w.__module__,
|
||||
source=w.source,
|
||||
)
|
||||
|
|
|
@ -581,3 +581,17 @@ def test_raise_type_error_on_invalid_warning_message_cpython() -> None:
|
|||
with warnings.catch_warnings():
|
||||
warnings.filterwarnings("ignore", "test")
|
||||
warnings.warn(1) # type: ignore
|
||||
|
||||
|
||||
def test_multiple_arg_custom_warning() -> None:
|
||||
"""Test for issue #11906."""
|
||||
|
||||
class CustomWarning(UserWarning):
|
||||
def __init__(self, a, b):
|
||||
pass
|
||||
|
||||
with pytest.warns(CustomWarning):
|
||||
with pytest.raises(pytest.fail.Exception, match="DID NOT WARN"):
|
||||
with pytest.warns(CustomWarning, match="not gonna match"):
|
||||
a, b = 1, 2
|
||||
warnings.warn(CustomWarning(a, b))
|
||||
|
|
Loading…
Reference in New Issue