Commit 0fc104c1 by Ned Batchelder

Simplify and robustify the tests

parent 60972b95
...@@ -11,54 +11,41 @@ class RequiredBaseClassTestCase(CheckerTestCase): ...@@ -11,54 +11,41 @@ class RequiredBaseClassTestCase(CheckerTestCase):
CHECKER_CLASS = RequiredBaseClassChecker 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): def test_no_messages_by_default(self):
node = self.get_class_node(''' node = astroid.parse('''
class MyClass(object): class MyClass(object):
pass pass
''') ''')
with self.assertNoMessages(): with self.assertNoMessages():
self.checker.visit_class(node) self.walk(node)
@set_config(required_base_class=["BaseClass:MyMixin"]) @set_config(required_base_class=["BaseClass:MyMixin"])
def test_no_messages_if_class_not_used(self): def test_no_messages_if_class_not_used(self):
node = self.get_class_node(''' node = astroid.parse('''
class MyClass(object): class MyClass(object):
pass pass
''') ''')
with self.assertNoMessages(): with self.assertNoMessages():
self.checker.visit_class(node) self.walk(node)
@set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"]) @set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"])
def test_error_if_class_is_not_used(self): def test_error_if_class_is_not_used(self):
node = self.get_class_node(''' node = astroid.parse('''
from unittest import TestCase from unittest import TestCase
class MyClass(TestCase): class MyClass(TestCase):
pass pass
''') ''')
expected_msg = Message( expected_msg = Message(
'missing-required-base-class', 'missing-required-base-class',
node=node, node=node.body[-1],
args=('MyClass', '.MyTestMixin'), args=('MyClass', '.MyTestMixin'),
) )
with self.assertAddsMessages(expected_msg): with self.assertAddsMessages(expected_msg):
self.checker.visit_class(node) self.walk(node)
@set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"]) @set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"])
def test_no_messages_if_class_is_used(self): def test_no_messages_if_class_is_used(self):
node = self.get_class_node(''' node = astroid.parse('''
from unittest import TestCase from unittest import TestCase
class MyTestMixin(object): class MyTestMixin(object):
pass pass
...@@ -66,15 +53,15 @@ class RequiredBaseClassTestCase(CheckerTestCase): ...@@ -66,15 +53,15 @@ class RequiredBaseClassTestCase(CheckerTestCase):
pass pass
''') ''')
with self.assertNoMessages(): with self.assertNoMessages():
self.checker.visit_class(node) self.walk(node)
@set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"]) @set_config(required_base_class=["unittest.case.TestCase:.MyTestMixin"])
def test_old_style_classes(self): def test_old_style_classes(self):
# We don't support base class checking on old-style classes, but we # We don't support base class checking on old-style classes, but we
# have to be sure not to fall over at least. # have to be sure not to fall over at least.
node = self.get_class_node(''' node = astroid.parse('''
class MyClass: class MyClass:
pass pass
''') ''')
with self.assertNoMessages(): 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