third_party.pylibs.pylint.src/pylint/test/extensions/test_redefined.py
Claudiu Popa 40a9d665dd Move redefined-variable-type into an extension
We got a lot of complaints about redefined-variable-type having multiple false positives
and not being reliable enough for a core checker. The fact that it doesn't take into account
duck typing makes it way to noisy when dealing with large code bases. Since it would take
some time until these concerns will be fixed, the checker becomes an extension and
can be later upgraded to a core one.
2016-02-16 17:48:14 +00:00

59 lines
1.8 KiB
Python

"""Tests for the pylint checker in :mod:`pylint.extensions.check_elif
"""
import os
import os.path as osp
import unittest
from pylint import checkers
from pylint.extensions.check_reassign import MultipleTypesChecker
from pylint.lint import PyLinter
from pylint.reporters import BaseReporter
class TestReporter(BaseReporter):
def handle_message(self, msg):
self.messages.append(msg)
def on_set_current_module(self, module, filepath):
self.messages = []
class CheckElseIfUsedTC(unittest.TestCase):
expected = [
'Redefinition of self.var1 type from int to float',
'Redefinition of var type from int to str',
'Redefinition of myint type from int to bool',
'Redefinition of _OK type from bool to str',
'Redefinition of instance type from redefined.MyClass to bool',
'Redefinition of SOME_FLOAT type from float to int',
'Redefinition of var3 type from str to int',
'Redefinition of var type from bool to int',
'Redefinition of var4 type from float to str',
]
@classmethod
def setUpClass(cls):
cls._linter = PyLinter()
cls._linter.set_reporter(TestReporter())
checkers.initialize(cls._linter)
cls._linter.register_checker(MultipleTypesChecker(cls._linter))
cls._linter.disable('I')
def test_types_redefined(self):
elif_test = osp.join(osp.dirname(osp.abspath(__file__)), 'data',
'redefined.py')
self._linter.check([elif_test])
msgs = sorted(self._linter.reporter.messages, key=lambda item: item.line)
self.assertEqual(len(msgs), 9)
for msg, expected in zip(msgs, self.expected):
self.assertEqual(msg.symbol, 'redefined-variable-type')
self.assertEqual(msg.msg, expected)
if __name__ == '__main__':
unittest.main()