mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
"Directory not found" error occurs when path to jar file is specified as Directory in "Find in Path" dialog (IDEA-218573)
GitOrigin-RevId: 935c0431f6587479b96870833ee4826b50b85f86
This commit is contained in:
committed by
intellij-monorepo-bot
parent
99d4500eed
commit
534c9d9a92
@@ -26,12 +26,14 @@ import com.intellij.openapi.progress.util.ProgressIndicatorBase;
|
||||
import com.intellij.openapi.project.DumbServiceImpl;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.ProperTextRange;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.JarFileSystem;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -85,6 +87,29 @@ public class FindManagerTest extends DaemonAnalyzerTestCase {
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
public void testFindInDirectoryCorrectlyFindVirtualFileForJars() {
|
||||
FindModel findModel = FindManagerTestUtils.configureFindModel("done");
|
||||
VirtualFile[] files = getTestProjectJdk().getRootProvider().getFiles(OrderRootType.CLASSES);
|
||||
VirtualFile rtJar = null;
|
||||
for(VirtualFile file:files) {
|
||||
if (file.getPath().contains("rt.jar")) {
|
||||
rtJar = JarFileSystem.getInstance().getLocalVirtualFileFor(file);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
assertNotNull(rtJar);
|
||||
findModel.setProjectScope(false);
|
||||
findModel.setDirectoryName(rtJar.getPath());
|
||||
assertNotNull(FindInProjectUtil.getDirectory(findModel));
|
||||
|
||||
VirtualFile jarRootForLocalFile = JarFileSystem.getInstance().getJarRootForLocalFile(rtJar);
|
||||
VirtualFile jarPackageInRtJar = jarRootForLocalFile.findChild("java");
|
||||
assertNotNull(jarPackageInRtJar);
|
||||
findModel.setDirectoryName(jarPackageInRtJar.getPath());
|
||||
assertNotNull(FindInProjectUtil.getDirectory(findModel));
|
||||
}
|
||||
|
||||
public void testFindString() throws InterruptedException {
|
||||
FindModel findModel = FindManagerTestUtils.configureFindModel("done");
|
||||
@Language("JAVA")
|
||||
|
||||
@@ -167,6 +167,9 @@ public class FindInProjectUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (virtualFile == null && !path.contains(JarFileSystem.JAR_SEPARATOR)) {
|
||||
virtualFile = JarFileSystem.getInstance().findFileByPath(path + JarFileSystem.JAR_SEPARATOR);
|
||||
}
|
||||
}
|
||||
return virtualFile;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user