import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.projectRoots.Sdk;
+import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
return UNRESOLVED_SYMBOL_PRIORITY;
}
final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(toImport.getProject());
- if (projectRootManager.getFileIndex().isInContent(vFile)) {
+ final ProjectFileIndex fileIndex = projectRootManager.getFileIndex();
+ if (fileIndex.isInContent(vFile) && !fileIndex.isInLibraryClasses(vFile)) {
return ImportPriority.PROJECT;
}
final Module module = ModuleUtilCore.findModuleForPsiElement(importLocation);
import com.intellij.codeInsight.actions.OptimizeImportsAction;
import com.intellij.ide.DataManager;
+import com.intellij.openapi.application.WriteAction;
+import com.intellij.openapi.projectRoots.Sdk;
+import com.intellij.openapi.projectRoots.SdkModificator;
+import com.intellij.openapi.roots.OrderRootType;
+import com.intellij.openapi.vfs.VirtualFile;
import com.jetbrains.python.fixtures.PyTestCase;
+import com.jetbrains.python.sdk.PythonSdkType;
/**
* @author yole
doTest();
}
+ // PY-18970
+ public void testLibraryRootInsideProject() {
+ final String testName = getTestName(true);
+ myFixture.copyDirectoryToProject(testName, "");
+ final VirtualFile libDir = myFixture.findFileInTempDir("lib");
+ assertNotNull(libDir);
+
+ final Sdk sdk = PythonSdkType.findPythonSdk(myFixture.getModule());
+ assertNotNull(sdk);
+ WriteAction.run(() -> {
+ final SdkModificator modificator = sdk.getSdkModificator();
+ assertNotNull(modificator);
+ modificator.addRoot(libDir, OrderRootType.CLASSES);
+ modificator.commitChanges();
+ });
+
+ try {
+ myFixture.configureByFile("main.py");
+ OptimizeImportsAction.actionPerformedImpl(DataManager.getInstance().getDataContext(myFixture.getEditor().getContentComponent()));
+ myFixture.checkResultByFile(testName + "/main.after.py");
+ }
+ finally {
+ //noinspection ThrowFromFinallyBlock
+ WriteAction.run(() -> {
+ final SdkModificator modificator = sdk.getSdkModificator();
+ assertNotNull(modificator);
+ modificator.removeRoot(libDir, OrderRootType.CLASSES);
+ modificator.commitChanges();
+ });
+ }
+ }
+
private void doTest() {
myFixture.configureByFile(getTestName(true) + ".py");
OptimizeImportsAction.actionPerformedImpl(DataManager.getInstance().getDataContext(myFixture.getEditor().getContentComponent()));