third_party.pylibs.pylint.src/test/unittest_checker_classes.py
Claudiu Popa 0766420cee Add a new option, 'exclude-protected'.
This option can be used for excluding members from the
protected-access warning. Closes issue #48.
2014-10-28 12:24:18 +02:00

51 lines
1.6 KiB
Python

"""Unit tests for the variables checker."""
import unittest
from astroid import test_utils
from pylint.checkers import classes
from pylint.testutils import CheckerTestCase, Message, set_config
class VariablesCheckerTC(CheckerTestCase):
CHECKER_CLASS = classes.ClassChecker
def test_bitbucket_issue_164(self):
"""Issue 164 report a false negative for access-member-before-definition"""
n1, n2 = test_utils.extract_node("""
class MyClass1(object):
def __init__(self):
self.first += 5 #@
self.first = 0 #@
""")
with self.assertAddsMessages(Message('access-member-before-definition',
node=n1.target, args=('first', n2.lineno))):
self.walk(n1.root())
@set_config(exclude_protected=('_meta', '_manager'))
def test_exclude_protected(self):
"""Test that exclude-protected can be used to
exclude names from protected-access warning.
"""
node = test_utils.build_module("""
class Protected(object):
'''empty'''
def __init__(self):
self._meta = 42
self._manager = 24
self._teta = 29
OBJ = Protected()
OBJ._meta
OBJ._manager
OBJ._teta
""")
with self.assertAddsMessages(
Message('protected-access',
node=node.body[-1].value,
args='_teta')):
self.walk(node.root())
if __name__ == '__main__':
unittest.main()