summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMatus Valo <matusvalo@gmail.com>2021-01-29 06:36:51 +0100
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-02-21 11:41:20 +0100
commit5aa8f18b6681711f683e5d56c0f569a2a4145571 (patch)
tree20f796677ce31c7e6df816895eed6d1c333ba3ab /tests
parent45c824549f9a7fa38df04ae8648d1647c82ba9b4 (diff)
downloadpylint-git-5aa8f18b6681711f683e5d56c0f569a2a4145571.tar.gz
Introduced DeprecatedMixin
Diffstat (limited to 'tests')
-rw-r--r--tests/checkers/unittest_deprecated.py99
1 files changed, 99 insertions, 0 deletions
diff --git a/tests/checkers/unittest_deprecated.py b/tests/checkers/unittest_deprecated.py
new file mode 100644
index 000000000..e4da246ff
--- /dev/null
+++ b/tests/checkers/unittest_deprecated.py
@@ -0,0 +1,99 @@
+import astroid
+
+from pylint.checkers import BaseChecker, DeprecatedMixin, utils
+from pylint.interfaces import UNDEFINED, IAstroidChecker
+from pylint.testutils import CheckerTestCase, Message
+
+
+class _DeprecatedChecker(BaseChecker, DeprecatedMixin):
+ __implements__ = (IAstroidChecker,)
+ name = "deprecated"
+
+ msgs = {
+ "W1505": (
+ "Using deprecated method %s()",
+ "deprecated-method",
+ "The method is marked as deprecated and will be removed in "
+ "a future version of Python. Consider looking for an "
+ "alternative in the documentation.",
+ )
+ }
+
+ @utils.check_messages(
+ "deprecated-method",
+ )
+ def visit_call(self, node):
+ """Visit a Call node."""
+ try:
+ for inferred in node.func.infer():
+ self.check_deprecated_method(node, inferred)
+ except astroid.InferenceError:
+ return
+
+ def deprecated_methods(self):
+ return {"deprecated_func", ".Deprecated.deprecated_method"}
+
+
+class TestDeprecatedChecker(CheckerTestCase):
+ CHECKER_CLASS = _DeprecatedChecker
+
+ def test_deprecated_function(self):
+ # Tests detecting deprecated function
+ node = astroid.extract_node(
+ """
+ def deprecated_func():
+ pass
+
+ deprecated_func()
+ """
+ )
+ with self.assertAddsMessages(
+ Message(
+ msg_id="deprecated-method",
+ args=("deprecated_func",),
+ node=node,
+ confidence=UNDEFINED,
+ )
+ ):
+ self.checker.visit_call(node)
+
+ def test_deprecated_method(self):
+ # Tests detecting deprecated method
+ node = astroid.extract_node(
+ """
+ class Deprecated:
+ def deprecated_method():
+ pass
+
+ d = Deprecated()
+ d.deprecated_method()
+ """
+ )
+ with self.assertAddsMessages(
+ Message(
+ msg_id="deprecated-method",
+ args=("deprecated_method",),
+ node=node,
+ confidence=UNDEFINED,
+ )
+ ):
+ self.checker.visit_call(node)
+
+ def test_no_message(self):
+ # Tests not raising error when no deprecated functions/methods are present.
+ node = astroid.extract_node(
+ """
+ class MyClass:
+ def mymethod():
+ pass
+
+ MyClass().mymethod()
+
+ def myfunc():
+ pass
+
+ myfunc()
+ """
+ )
+ with self.assertNoMessages():
+ self.checker.visit_call(node)