summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2013-12-27 12:35:34 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2013-12-27 12:35:34 +0200
commite6c7c322d96f63911da3ced497aadaf9968852c7 (patch)
tree8a5a95859d3934b6089d3319582daa8ffddd45f4
parent46cf84884626d8e960d53ea74f2e3aac2f603122 (diff)
downloadastroid-git-e6c7c322d96f63911da3ced497aadaf9968852c7.tar.gz
Fix `as_string` for one element tuples.
-rw-r--r--as_string.py2
-rw-r--r--test/unittest_nodes.py9
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)')