diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2013-12-27 12:35:34 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2013-12-27 12:35:34 +0200 |
commit | e6c7c322d96f63911da3ced497aadaf9968852c7 (patch) | |
tree | 8a5a95859d3934b6089d3319582daa8ffddd45f4 | |
parent | 46cf84884626d8e960d53ea74f2e3aac2f603122 (diff) | |
download | astroid-git-e6c7c322d96f63911da3ced497aadaf9968852c7.tar.gz |
Fix `as_string` for one element tuples.
-rw-r--r-- | as_string.py | 2 | ||||
-rw-r--r-- | test/unittest_nodes.py | 9 |
2 files changed, 11 insertions, 0 deletions
diff --git a/as_string.py b/as_string.py index b7e62571..72c5b6c3 100644 --- a/as_string.py +++ b/as_string.py @@ -399,6 +399,8 @@ class AsStringVisitor(object): def visit_tuple(self, node): """return an astroid.Tuple node as string""" + if len(node.elts) == 1: + return '(%s, )' % node.elts[0].accept(self) return '(%s)' % ', '.join([child.accept(self) for child in node.elts]) def visit_unaryop(self, node): diff --git a/test/unittest_nodes.py b/test/unittest_nodes.py index 14813bb8..514487c0 100644 --- a/test/unittest_nodes.py +++ b/test/unittest_nodes.py @@ -35,6 +35,15 @@ abuilder = builder.AstroidBuilder() class AsString(testlib.TestCase): + def test_tuple_as_string(self): + def build(string): + return abuilder.string_build(string).body[0].value + + self.assertEqual(build('1,').as_string(), '(1, )') + self.assertEqual(build('1, 2, 3').as_string(), '(1, 2, 3)') + self.assertEqual(build('(1, )').as_string(), '(1, )') + self.assertEqual(build('1, 2, 3').as_string(), '(1, 2, 3)') + def test_varargs_kwargs_as_string(self): ast = abuilder.string_build( 'raise_string(*args, **kwargs)').body[0] self.assertEqual(ast.as_string(), 'raise_string(*args, **kwargs)') |