diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2015-10-08 02:07:59 +0300 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2015-10-08 02:07:59 +0300 |
commit | 57fe8b8721a1463a44d7542b2b002603b1b66ab2 (patch) | |
tree | 76c2318a578a25f52f7095d967e1b67fe6c5fc1a /astroid/tests | |
parent | b6455a5aeb20e868c24094d6f6b9962bb52f8127 (diff) | |
download | astroid-57fe8b8721a1463a44d7542b2b002603b1b66ab2.tar.gz |
Support PEP 448 unpackings in dict calls.
Diffstat (limited to 'astroid/tests')
-rw-r--r-- | astroid/tests/unittest_inference.py | 26 |
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 = """ |