diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2015-11-30 15:50:45 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2015-11-30 15:50:45 +0200 |
commit | 304ae035b9b5e42bb1eb65baecc58d5c9b5ab14d (patch) | |
tree | 288b376b968f1aa3d5df2592a11e53e8857ef2c6 /pylint/test/unittest_lint.py | |
parent | f0e5799175980963b1dc8c2e3e068f022917c4bf (diff) | |
download | pylint-304ae035b9b5e42bb1eb65baecc58d5c9b5ab14d.tar.gz |
Fix a crash which occurred when old visit methods are encountered
in plugin modules.
If a plugin uses an old visit method (visit_class for instance), this can lead
to a crash in pylint's base checkers, because the logic in the PylintASTWalker
assumes that all checkers have a visit_class / leave_class method. The
patch fixes this by looking for both names.
Closes issue #711.
Diffstat (limited to 'pylint/test/unittest_lint.py')
-rw-r--r-- | pylint/test/unittest_lint.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/pylint/test/unittest_lint.py b/pylint/test/unittest_lint.py index 3095108..5877d4c 100644 --- a/pylint/test/unittest_lint.py +++ b/pylint/test/unittest_lint.py @@ -33,6 +33,7 @@ from pylint.utils import MSG_STATE_SCOPE_CONFIG, MSG_STATE_SCOPE_MODULE, MSG_STA from pylint.testutils import TestReporter from pylint.reporters import text, html from pylint import checkers +from pylint.checkers.utils import check_messages from pylint import interfaces if os.name == 'java': @@ -217,6 +218,22 @@ class PyLinterTC(unittest.TestCase): linter.file_state = FileState('toto') return linter + def test_pylint_visit_method_taken_in_account(self): + class CustomChecker(checkers.BaseChecker): + __implements__ = interfaces.IAstroidChecker + name = 'custom' + msgs = {'W9999': ('', 'custom', '')} + + @check_messages('custom') + def visit_class(self, _): + pass + + self.linter.register_checker(CustomChecker(self.linter)) + self.linter.open() + out = six.moves.StringIO() + self.linter.set_reporter(text.TextReporter(out)) + self.linter.check('abc') + def test_enable_message(self): linter = self.init_linter() self.assertTrue(linter.is_message_enabled('W0101')) @@ -669,6 +686,6 @@ class MessagesStoreTC(unittest.TestCase): self.assertEqual('msg-symbol', self.store.check_message_id('old-symbol').symbol) - + if __name__ == '__main__': unittest.main() |