Reemit deprecation warnings from `pytest.warns`
Only suppress deprecations explicitly stated in `expected_warning` argument.
This commit is contained in:
parent
24534cdd29
commit
2e928ce140
|
@ -0,0 +1 @@
|
||||||
|
``pytest.warns`` no longer suppresses warnings derived from ``DeprecationWarning`` and ``PendingDeprecationWarning`` by default.
|
|
@ -292,6 +292,15 @@ class WarningsChecker(WarningsRecorder):
|
||||||
|
|
||||||
# only check if we're not currently handling an exception
|
# only check if we're not currently handling an exception
|
||||||
if exc_type is None and exc_val is None and exc_tb is None:
|
if exc_type is None and exc_val is None and exc_tb is None:
|
||||||
|
for w in self:
|
||||||
|
reemit = {DeprecationWarning, PendingDeprecationWarning}
|
||||||
|
if self.expected_warning is not None:
|
||||||
|
reemit -= set(self.expected_warning)
|
||||||
|
if issubclass(w.category, tuple(reemit)):
|
||||||
|
warnings.showwarning(
|
||||||
|
w.message, w.category, w.filename, w.lineno, w.file, w.line
|
||||||
|
)
|
||||||
|
|
||||||
if self.expected_warning is not None:
|
if self.expected_warning is not None:
|
||||||
if not any(issubclass(r.category, self.expected_warning) for r in self):
|
if not any(issubclass(r.category, self.expected_warning) for r in self):
|
||||||
__tracebackhide__ = True
|
__tracebackhide__ = True
|
||||||
|
|
|
@ -83,6 +83,20 @@ class TestWarningsRecorderChecker:
|
||||||
with rec:
|
with rec:
|
||||||
pass # can't enter twice
|
pass # can't enter twice
|
||||||
|
|
||||||
|
def test_no_suppress_deprecation_warnings(self) -> None:
|
||||||
|
with warnings.catch_warnings(record=True) as record:
|
||||||
|
warnings.simplefilter("always")
|
||||||
|
with pytest.warns(DeprecationWarning), pytest.warns(
|
||||||
|
PendingDeprecationWarning
|
||||||
|
):
|
||||||
|
with pytest.warns(UserWarning):
|
||||||
|
warnings.warn("my warning", UserWarning)
|
||||||
|
warnings.warn("some deprecation warning", DeprecationWarning)
|
||||||
|
warnings.warn(
|
||||||
|
"other deprecation warning", PendingDeprecationWarning
|
||||||
|
)
|
||||||
|
assert len(record) == 0
|
||||||
|
|
||||||
|
|
||||||
class TestDeprecatedCall:
|
class TestDeprecatedCall:
|
||||||
"""test pytest.deprecated_call()"""
|
"""test pytest.deprecated_call()"""
|
||||||
|
@ -217,6 +231,14 @@ class TestDeprecatedCall:
|
||||||
with pytest.deprecated_call(match=r"must be \d+$"):
|
with pytest.deprecated_call(match=r"must be \d+$"):
|
||||||
warnings.warn("this is not here", DeprecationWarning)
|
warnings.warn("this is not here", DeprecationWarning)
|
||||||
|
|
||||||
|
def test_suppress_deprecation_warnings(self) -> None:
|
||||||
|
with warnings.catch_warnings(record=True) as record:
|
||||||
|
warnings.simplefilter("always")
|
||||||
|
with pytest.deprecated_call():
|
||||||
|
warnings.warn("some deprecation warning", DeprecationWarning)
|
||||||
|
warnings.warn("other deprecation warning", PendingDeprecationWarning)
|
||||||
|
assert len(record) == 0
|
||||||
|
|
||||||
|
|
||||||
class TestWarns:
|
class TestWarns:
|
||||||
def test_check_callable(self) -> None:
|
def test_check_callable(self) -> None:
|
||||||
|
|
Loading…
Reference in New Issue