PY-7376 Resolving of relative imports takes into account namespace packages

This commit is contained in:
Mikhail Golubev
2014-11-12 21:12:31 +03:00
parent 2863992586
commit 3b0cc0de47
10 changed files with 22 additions and 1 deletions
@@ -95,7 +95,7 @@ public class ResolveImportUtil {
base = base.getOriginalFile(); // just to make sure
result = base.getContainingDirectory();
int count = 1;
while (result != null && result.findFile(PyNames.INIT_DOT_PY) != null) {
while (result != null && PyUtil.isPackage(result, base)) {
if (count >= depth) return result;
result = result.getParentDirectory();
count += 1;
@@ -0,0 +1 @@
from .nspkg2 import foo
@@ -0,0 +1 @@
from .nspkg2 import f<caret>
@@ -0,0 +1 @@
from . import foo
@@ -0,0 +1 @@
from . import f<caret>
@@ -119,4 +119,21 @@ public class Py3CompletionTest extends PyTestCase {
public void testImportNestedQualifiedNamespacePackage() {
doMultiFileTest();
}
// PY-7376
public void testRelativeFromImportInNamespacePackage() {
doMultiFileTestInsideNamespacePackage();
}
// PY-7376
public void testRelativeFromImportInNamespacePackage2() {
doMultiFileTestInsideNamespacePackage();
}
private void doMultiFileTestInsideNamespacePackage() {
myFixture.copyDirectoryToProject("completion/" + getTestName(true), "");
myFixture.configureByFile("nspkg1/a.py");
myFixture.completeBasic();
myFixture.checkResultByFile("completion/" + getTestName(true) + "/nspkg1/a.after.py");
}
}