Commit 0fc104c1 by Ned Batchelder

Simplify and robustify the tests

parent 60972b95
......@@ -11,54 +11,41 @@ class RequiredBaseClassTestCase(CheckerTestCase):
CHECKER_CLASS = RequiredBaseClassChecker
def get_class_node(self, code):
"""Parse `code`, and return the last class node.
The code should have at least one class definition.
"""
node = astroid.parse(code)
class_node = None
for body_node in node.body:
if getattr(body_node, 'type', 'none') == "class":
class_node = body_node
return class_node
def test_no_messages_by_default(self):
node = self.get_class_node('''
node = astroid.parse('''
class MyClass(object):
pass
''')
with self.assertNoMessages():
self.checker.visit_class(node)
self.walk(node)
@set_config(required_base_class=["BaseClass:MyMixin"])
def test_no_messages_if_class_not_used(self):
node = self.get_class_node('''
node = astroid.parse('''
class MyClass(object):
pass
''')
with self.assertNoMessages():
self.checker.visit_class(node)
self.walk(node)
@set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"])
def test_error_if_class_is_not_used(self):
node = self.get_class_node('''
node = astroid.parse('''
from unittest import TestCase
class MyClass(TestCase):
pass
''')
expected_msg = Message(
'missing-required-base-class',
node=node,
node=node.body[-1],
args=('MyClass', '.MyTestMixin'),
)
with self.assertAddsMessages(expected_msg):
self.checker.visit_class(node)
self.walk(node)
@set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"])
def test_no_messages_if_class_is_used(self):
node = self.get_class_node('''
node = astroid.parse('''
from unittest import TestCase
class MyTestMixin(object):
pass
......@@ -66,15 +53,15 @@ class RequiredBaseClassTestCase(CheckerTestCase):
pass
''')
with self.assertNoMessages():
self.checker.visit_class(node)
self.walk(node)
@set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"])
def test_old_style_classes(self):
# We don't support base class checking on old-style classes, but we
# have to be sure not to fall over at least.
node = self.get_class_node('''
node = astroid.parse('''
class MyClass:
pass
''')
with self.assertNoMessages():
self.checker.visit_class(node)
self.walk(node)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment