diff options
author | Matus Valo <matusvalo@gmail.com> | 2021-01-29 06:36:51 +0100 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-02-21 11:41:20 +0100 |
commit | 5aa8f18b6681711f683e5d56c0f569a2a4145571 (patch) | |
tree | 20f796677ce31c7e6df816895eed6d1c333ba3ab /tests | |
parent | 45c824549f9a7fa38df04ae8648d1647c82ba9b4 (diff) | |
download | pylint-git-5aa8f18b6681711f683e5d56c0f569a2a4145571.tar.gz |
Introduced DeprecatedMixin
Diffstat (limited to 'tests')
-rw-r--r-- | tests/checkers/unittest_deprecated.py | 99 |
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) |