pytest.deprecated_call now captures PendingDeprecationWarning in context manager form

Fix #2441
This commit is contained in:
Bruno Oliveira 2017-05-29 22:46:15 -03:00
parent ee0844dbd8
commit f96a1d89c5
3 changed files with 12 additions and 8 deletions

View File

@ -45,7 +45,7 @@ def deprecated_call(func=None, *args, **kwargs):
triggered twice for the same module. See #1190.
"""
if not func:
return WarningsChecker(expected_warning=DeprecationWarning)
return WarningsChecker(expected_warning=(DeprecationWarning, PendingDeprecationWarning))
categories = []

1
changelog/2441.bugfix Normal file
View File

@ -0,0 +1 @@
``pytest.deprecated_call`` now captures ``PendingDeprecationWarning`` in context manager form.

View File

@ -109,14 +109,17 @@ class TestDeprecatedCall(object):
with pytest.deprecated_call():
self.dep(1)
def test_deprecated_call_as_context_manager(self):
with pytest.deprecated_call():
self.dep(0)
def test_deprecated_call_pending(self):
@pytest.mark.parametrize('warning_type', [PendingDeprecationWarning, DeprecationWarning])
@pytest.mark.parametrize('mode', ['context_manager', 'call'])
def test_deprecated_call_modes(self, warning_type, mode):
def f():
py.std.warnings.warn(PendingDeprecationWarning("hi"))
pytest.deprecated_call(f)
warnings.warn(warning_type("hi"))
if mode == 'call':
pytest.deprecated_call(f)
else:
with pytest.deprecated_call():
f()
def test_deprecated_call_specificity(self):
other_warnings = [Warning, UserWarning, SyntaxWarning, RuntimeWarning,