diff options
Diffstat (limited to 'astroid/tests')
-rw-r--r-- | astroid/tests/unittest_inference.py | 48 |
1 files changed, 42 insertions, 6 deletions
diff --git a/astroid/tests/unittest_inference.py b/astroid/tests/unittest_inference.py index f543dbb..98a4daf 100644 --- a/astroid/tests/unittest_inference.py +++ b/astroid/tests/unittest_inference.py @@ -1796,8 +1796,6 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): ' '.index() #@ ' '.find() #@ ' '.count() #@ - - ' '.split() #@ """ ast = test_utils.extract_node(code, __name__) self.assertInferConst(ast[0], u'') @@ -1805,7 +1803,6 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): self.assertInferConst(ast[i], '') for i in range(16, 19): self.assertInferConst(ast[i], 0) - self.assertInferList(ast[19], []) def test_unicode_methods(self): code = """ @@ -1830,8 +1827,6 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): u' '.index() #@ u' '.find() #@ u' '.count() #@ - - u' '.split() #@ """ ast = test_utils.extract_node(code, __name__) self.assertInferConst(ast[0], '') @@ -1839,7 +1834,6 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): self.assertInferConst(ast[i], u'') for i in range(16, 19): self.assertInferConst(ast[i], 0) - self.assertInferList(ast[19], []) def test_scope_lookup_same_attributes(self): code = ''' @@ -3143,6 +3137,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): |