From e997206801738d624e5bb49bf90e88188f26b0f7 Mon Sep 17 00:00:00 2001 From: Emile Anclin Date: Wed, 8 Dec 2010 10:35:53 +0100 Subject: as_string: fix explicit relative imports; add test --- as_string.py | 4 ++-- test/unittest_nodes.py | 6 ++++++ 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): -- cgit v1.2.1