From e8261e0c77f428fd766cd82aa55b5cbeb58e7de8 Mon Sep 17 00:00:00 2001 From: Eric Hunsberger Date: Mon, 28 Sep 2015 12:09:44 -0400 Subject: [PATCH] `deprecated_call` detects pending warnings again `deprecated_call` now looks for PendingDeprecationWarnings, as it did previously but was broken by #897. Fixes #1037. Also added a test so this does not happen again. --- _pytest/recwarn.py | 3 ++- testing/test_recwarn.py | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/_pytest/recwarn.py b/_pytest/recwarn.py index abefdfac1..601acffda 100644 --- a/_pytest/recwarn.py +++ b/_pytest/recwarn.py @@ -36,7 +36,8 @@ def deprecated_call(func, *args, **kwargs): warnings.simplefilter('always') # ensure all warnings are triggered ret = func(*args, **kwargs) - if not any(r.category is DeprecationWarning for r in wrec): + depwarnings = (DeprecationWarning, PendingDeprecationWarning) + if not any(r.category in depwarnings for r in wrec): __tracebackhide__ = True raise AssertionError("%r did not produce DeprecationWarning" % (func,)) diff --git a/testing/test_recwarn.py b/testing/test_recwarn.py index 644b09ef7..08436c9fc 100644 --- a/testing/test_recwarn.py +++ b/testing/test_recwarn.py @@ -81,7 +81,7 @@ def dep_explicit(i): class TestDeprecatedCall(object): def test_deprecated_call_raises(self): excinfo = pytest.raises(AssertionError, - "pytest.deprecated_call(dep, 3)") + "pytest.deprecated_call(dep, 3)") assert str(excinfo).find("did not produce") != -1 def test_deprecated_call(self): @@ -105,12 +105,16 @@ class TestDeprecatedCall(object): def test_deprecated_explicit_call_raises(self): pytest.raises(AssertionError, - "pytest.deprecated_call(dep_explicit, 3)") + "pytest.deprecated_call(dep_explicit, 3)") def test_deprecated_explicit_call(self): pytest.deprecated_call(dep_explicit, 0) pytest.deprecated_call(dep_explicit, 0) + def test_deprecated_call_pending(self): + f = lambda: py.std.warnings.warn(PendingDeprecationWarning("hi")) + pytest.deprecated_call(f) + class TestWarns(object): def test_strings(self): @@ -181,4 +185,3 @@ class TestWarns(object): ''') result = testdir.runpytest() result.stdout.fnmatch_lines(['*2 passed in*']) -