diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2015-09-29 15:42:30 +0300 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2015-09-29 15:42:30 +0300 |
commit | f9101015b4b3b7e4409e8956fcb7433469a165a5 (patch) | |
tree | 6bdfa3c4d8dce8d2df81c534e883b3592bbf82df /astroid/tests/unittest_inference.py | |
parent | 6d251ba39d29afaf66ceee9e8ce97f75c8ddd920 (diff) | |
download | astroid-f9101015b4b3b7e4409e8956fcb7433469a165a5.tar.gz |
Import test for pylint regarding context inference in relation with factory methods.
Diffstat (limited to 'astroid/tests/unittest_inference.py')
-rw-r--r-- | astroid/tests/unittest_inference.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/astroid/tests/unittest_inference.py b/astroid/tests/unittest_inference.py index 75eed79..093b076 100644 --- a/astroid/tests/unittest_inference.py +++ b/astroid/tests/unittest_inference.py @@ -2976,6 +2976,25 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): ''') self.assertIsNone(helpers.safe_infer(ast_node.targets[0])) + def test_classmethod_inferred_by_context(self): + ast_node = test_utils.extract_node(''' + class Super(object): + def instance(cls): + return cls() + instance = classmethod(instance) + + class Sub(Super): + def method(self): + return self + + # should see the Sub.instance() is returning a Sub + # instance, not a Super instance + Sub.instance().method() #@ + ''') + inferred = next(ast_node.infer()) + self.assertIsInstance(inferred, Instance) + self.assertEqual(inferred.name, 'Sub') + class GetattrTest(unittest.TestCase): |