Merge pull request #2446 from nicoddemus/issue-2441

pytest.deprecated_call now captures PendingDeprecationWarning in context manager form
This commit is contained in:
Ronny Pfannschmidt 2017-05-30 20:09:37 +02:00 committed by GitHub
commit 454426cba5
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. triggered twice for the same module. See #1190.
""" """
if not func: if not func:
return WarningsChecker(expected_warning=DeprecationWarning) return WarningsChecker(expected_warning=(DeprecationWarning, PendingDeprecationWarning))
categories = [] 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(): with pytest.deprecated_call():
self.dep(1) self.dep(1)
def test_deprecated_call_as_context_manager(self): @pytest.mark.parametrize('warning_type', [PendingDeprecationWarning, DeprecationWarning])
with pytest.deprecated_call(): @pytest.mark.parametrize('mode', ['context_manager', 'call'])
self.dep(0) def test_deprecated_call_modes(self, warning_type, mode):
def test_deprecated_call_pending(self):
def f(): def f():
py.std.warnings.warn(PendingDeprecationWarning("hi")) warnings.warn(warning_type("hi"))
pytest.deprecated_call(f)
if mode == 'call':
pytest.deprecated_call(f)
else:
with pytest.deprecated_call():
f()
def test_deprecated_call_specificity(self): def test_deprecated_call_specificity(self):
other_warnings = [Warning, UserWarning, SyntaxWarning, RuntimeWarning, other_warnings = [Warning, UserWarning, SyntaxWarning, RuntimeWarning,