From beee981420164fb6f2a8e153081b261c11fddd99 Mon Sep 17 00:00:00 2001 From: Cory Benfield Date: Mon, 21 Mar 2016 11:38:20 +0000 Subject: Test deleting deprecated attributes. --- tests/test_warnings.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'tests/test_warnings.py') diff --git a/tests/test_warnings.py b/tests/test_warnings.py index 9946baa7..d27e757f 100644 --- a/tests/test_warnings.py +++ b/tests/test_warnings.py @@ -8,6 +8,8 @@ import sys import types import warnings +import pytest + from cryptography.utils import deprecated @@ -45,3 +47,42 @@ class TestDeprecated(object): assert msg2.message.args == ("more deprecated text",) assert "Y" in dir(mod) + + def test_deleting_deprecated_members(self, monkeypatch): + mod = types.ModuleType("TestDeprecated/test_deprecated") + monkeypatch.setitem(sys.modules, mod.__name__, mod) + mod.X = deprecated( + value=1, + module_name=mod.__name__, + message="deprecated message text", + warning_class=DeprecationWarning + ) + mod.Y = deprecated( + value=2, + module_name=mod.__name__, + message="more deprecated text", + warning_class=PendingDeprecationWarning, + ) + mod = sys.modules[mod.__name__] + mod.Z = 3 + + with warnings.catch_warnings(record=True) as log: + warnings.simplefilter("always", PendingDeprecationWarning) + warnings.simplefilter("always", DeprecationWarning) + del mod.X + del mod.Y + del mod.Z + + [msg1, msg2] = log + assert msg1.category is DeprecationWarning + assert msg1.message.args == ("deprecated message text",) + + assert msg2.category is PendingDeprecationWarning + assert msg2.message.args == ("more deprecated text",) + + assert "X" not in dir(mod) + assert "Y" not in dir(mod) + assert "Z" not in dir(mod) + + with pytest.raises(AttributeError): + del mod.X -- cgit v1.2.3