summaryrefslogtreecommitdiff
path: root/astroid/tests
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2015-10-08 02:07:59 +0300
committerClaudiu Popa <pcmanticore@gmail.com>2015-10-08 02:07:59 +0300
commit57fe8b8721a1463a44d7542b2b002603b1b66ab2 (patch)
tree76c2318a578a25f52f7095d967e1b67fe6c5fc1a /astroid/tests
parentb6455a5aeb20e868c24094d6f6b9962bb52f8127 (diff)
downloadastroid-57fe8b8721a1463a44d7542b2b002603b1b66ab2.tar.gz
Support PEP 448 unpackings in dict calls.
Diffstat (limited to 'astroid/tests')
-rw-r--r--astroid/tests/unittest_inference.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/astroid/tests/unittest_inference.py b/astroid/tests/unittest_inference.py
index ed13fc2..9c80a92 100644
--- a/astroid/tests/unittest_inference.py
+++ b/astroid/tests/unittest_inference.py
@@ -1720,6 +1720,32 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase):
self.assertIsInstance(inferred, Instance)
self.assertEqual(inferred.qname(), "{}.dict".format(BUILTINS))
+ def test_dict_inference_kwargs(self):
+ ast_node = test_utils.extract_node('''dict(a=1, b=2, **{'c': 3})''')
+ self.assertInferDict(ast_node, {'a': 1, 'b': 2, 'c': 3})
+
+ @test_utils.require_version('3.5')
+ def test_dict_inference_for_multiple_starred(self):
+ pairs = [
+ ('dict(a=1, **{"b": 2}, **{"c":3})', {'a':1, 'b':2, 'c':3}),
+ ('dict(a=1, **{"b": 2}, d=4, **{"c":3})', {'a':1, 'b':2, 'c':3, 'd':4}),
+ ('dict({"a":1}, b=2, **{"c":3})', {'a':1, 'b':2, 'c':3}),
+ ]
+ for code, expected_value in pairs:
+ node = test_utils.extract_node(code)
+ self.assertInferDict(node, expected_value)
+
+ def test_dict_invalid_args(self):
+ invalid_values = [
+ 'dict(*1)',
+ 'dict(**lala)',
+ 'dict(**[])',
+ ]
+ for invalid in invalid_values:
+ ast_node = test_utils.extract_node(invalid)
+ inferred = next(ast_node.infer())
+ self.assertIsInstance(inferred, Instance)
+ self.assertEqual(inferred.qname(), "{}.dict".format(BUILTINS))
def test_str_methods(self):
code = """