summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--as_string.py4
-rw-r--r--test/unittest_nodes.py6
2 files changed, 8 insertions, 2 deletions
diff --git a/as_string.py b/as_string.py
index 61ce44e0..62ab5e84 100644
--- a/as_string.py
+++ b/as_string.py
@@ -228,8 +228,8 @@ class AsStringVisitor(object):
def visit_from(self, node):
"""return an astng.From node as string"""
- modname = node.modname or '.' * node.level
- return 'from %s import %s' % (modname, _import_string(node.names))
+ return 'from %s import %s' % ('.' * (node.level or 0) + node.modname,
+ _import_string(node.names))
def visit_function(self, node):
"""return an astng.Function node as string"""
diff --git a/test/unittest_nodes.py b/test/unittest_nodes.py
index 9d0b13fe..22843230 100644
--- a/test/unittest_nodes.py
+++ b/test/unittest_nodes.py
@@ -270,6 +270,12 @@ class ImportNodeTC(testlib.TestCase):
self.assertEqual(as_string(ast), "from logilab.common.shellutils import Execute as spawn")
ast = MODULE['os']
self.assertEqual(as_string(ast), "import os.path")
+ code = """from . import here
+from .. import door
+from .store import bread
+from ..cave import wine\n\n"""
+ ast = abuilder.string_build(code)
+ self.assertMultiLineEqual(ast.as_string(), code)
class CmpNodeTC(testlib.TestCase):
def test_as_string(self):