From c6e3606c6bb70968f537337aed739ccb7ce5a070 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Tue, 28 Jun 2011 10:39:11 -0500 Subject: [PATCH] fix the rewriter on relative imports (fixes #58) --- _pytest/assertion/rewrite.py | 4 ++-- testing/test_assertrewrite.py | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/_pytest/assertion/rewrite.py b/_pytest/assertion/rewrite.py index 6c9067525..6091186ca 100644 --- a/_pytest/assertion/rewrite.py +++ b/_pytest/assertion/rewrite.py @@ -109,8 +109,8 @@ class AssertionRewriter(ast.NodeVisitor): return lineno += len(doc) - 1 expect_docstring = False - elif (not isinstance(item, ast.ImportFrom) or item.level > 0 and - item.identifier != "__future__"): + elif (not isinstance(item, ast.ImportFrom) or item.level > 0 or + item.module != "__future__"): lineno = item.lineno break pos += 1 diff --git a/testing/test_assertrewrite.py b/testing/test_assertrewrite.py index aa9029963..ca38ff2bf 100644 --- a/testing/test_assertrewrite.py +++ b/testing/test_assertrewrite.py @@ -76,6 +76,13 @@ class TestAssertionRewrite: assert imp.lineno == 3 assert imp.col_offset == 0 assert isinstance(m.body[4], ast.Expr) + s = """from . import relative\nother_stuff""" + m = rewrite(s) + for imp in m.body[0:2]: + assert isinstance(imp, ast.Import) + assert imp.lineno == 1 + assert imp.col_offset == 0 + assert isinstance(m.body[3], ast.Expr) def test_dont_rewrite(self): s = """'PYTEST_DONT_REWRITE'\nassert 14"""