mirror of
https://fuchsia.googlesource.com/third_party/github.com/pylint-dev/pylint
synced 2024-09-21 16:19:21 +00:00
70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
# For details: https://github.com/PyCQA/pylint/blob/master/COPYING
|
|
|
|
import warnings
|
|
|
|
import astroid
|
|
|
|
from pylint.checkers.utils import check_messages
|
|
from pylint.utils import ASTWalker
|
|
|
|
|
|
class TestASTWalker(object):
|
|
class MockLinter(object):
|
|
def __init__(self, msgs):
|
|
self._msgs = msgs
|
|
|
|
def is_message_enabled(self, msgid):
|
|
return self._msgs.get(msgid, True)
|
|
|
|
class Checker(object):
|
|
def __init__(self):
|
|
self.called = set()
|
|
|
|
@check_messages("first-message")
|
|
def visit_module(self, module):
|
|
self.called.add("module")
|
|
|
|
@check_messages("second-message")
|
|
def visit_call(self, module):
|
|
raise NotImplementedError
|
|
|
|
@check_messages("second-message", "third-message")
|
|
def visit_assignname(self, module):
|
|
self.called.add("assignname")
|
|
|
|
@check_messages("second-message")
|
|
def leave_assignname(self, module):
|
|
raise NotImplementedError
|
|
|
|
def test_check_messages(self):
|
|
linter = self.MockLinter(
|
|
{"first-message": True, "second-message": False, "third-message": True}
|
|
)
|
|
walker = ASTWalker(linter)
|
|
checker = self.Checker()
|
|
walker.add_checker(checker)
|
|
walker.walk(astroid.parse("x = func()"))
|
|
assert {"module", "assignname"} == checker.called
|
|
|
|
def test_deprecated_methods(self):
|
|
class Checker(object):
|
|
def __init__(self):
|
|
self.called = False
|
|
|
|
@check_messages("first-message")
|
|
def visit_assname(self, node):
|
|
self.called = True
|
|
|
|
linter = self.MockLinter({"first-message": True})
|
|
walker = ASTWalker(linter)
|
|
checker = Checker()
|
|
walker.add_checker(checker)
|
|
with warnings.catch_warnings(record=True):
|
|
warnings.simplefilter("always")
|
|
walker.walk(astroid.parse("x = 1"))
|
|
|
|
assert not checker.called
|