summaryrefslogtreecommitdiff
path: root/astroid/tests/unittest_inference.py
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2015-11-04 12:48:16 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2015-11-04 12:48:16 +0200
commit4a871042e457bbbe1f6290dcfe38c1d771385cde (patch)
tree49252f2c45fe8f70af7abab31e19906b1fa4df4d /astroid/tests/unittest_inference.py
parentf5c3e703ec3de5d6e4f50583475d7b18fb0d6beb (diff)
parent6ae9890de48b18ea7f4a2cad8a5cb6dd44eab155 (diff)
downloadastroid-4a871042e457bbbe1f6290dcfe38c1d771385cde.tar.gz
Merge bookmark heads.
Diffstat (limited to 'astroid/tests/unittest_inference.py')
-rw-r--r--astroid/tests/unittest_inference.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/astroid/tests/unittest_inference.py b/astroid/tests/unittest_inference.py
index fa090f8..0f45d3a 100644
--- a/astroid/tests/unittest_inference.py
+++ b/astroid/tests/unittest_inference.py
@@ -3143,6 +3143,48 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase):
self.assertIsInstance(third_c, Instance)
self.assertEqual(third_c.name, 'A')
+ def test_metaclass_subclasses_arguments_are_classes_not_instances(self):
+ ast_node = test_utils.extract_node('''
+ class A(type):
+ def test(cls):
+ return cls
+ import six
+ @six.add_metaclass(A)
+ class B(object):
+ pass
+
+ B.test() #@
+ ''')
+ inferred = next(ast_node.infer())
+ self.assertIsInstance(inferred, nodes.ClassDef)
+ self.assertEqual(inferred.name, 'B')
+
+ def test_infer_cls_in_class_methods(self):
+ ast_nodes = test_utils.extract_node('''
+ class A(type):
+ def __call__(cls):
+ cls #@
+ class B(object):
+ def __call__(cls):
+ cls #@
+ ''')
+ first = next(ast_nodes[0].infer())
+ self.assertIsInstance(first, nodes.ClassDef)
+ second = next(ast_nodes[1].infer())
+ self.assertIsInstance(second, Instance)
+
+ @unittest.expectedFailure
+ def test_metaclass_arguments_are_classes_not_instances(self):
+ ast_node = test_utils.extract_node('''
+ class A(type):
+ def test(cls): return cls
+ A.test() #@
+ ''')
+ # This is not supported yet
+ inferred = next(ast_node.infer())
+ self.assertIsInstance(inferred, ClassDef)
+ self.assertEqual(inferred.name, 'A')
+
class GetattrTest(unittest.TestCase):