mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-122578 Support content roots under ignored directories
This commit is contained in:
@@ -20,6 +20,7 @@ import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx;
|
||||
import com.intellij.openapi.module.ModifiableModuleModel;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.module.StdModuleTypes;
|
||||
@@ -330,9 +331,10 @@ public class DirectoryIndexTest extends IdeaTestCase {
|
||||
}
|
||||
|
||||
public void testChangeIgnoreList() throws Exception {
|
||||
myModule1Dir.createChildDirectory(this, "newDir");
|
||||
|
||||
VirtualFile newDir = myModule1Dir.createChildDirectory(this, "newDir");
|
||||
|
||||
myIndex.checkConsistency();
|
||||
checkInfoNotNull(newDir);
|
||||
|
||||
final FileTypeManagerEx fileTypeManager = (FileTypeManagerEx)FileTypeManager.getInstance();
|
||||
final String list = fileTypeManager.getIgnoredFilesList();
|
||||
@@ -344,8 +346,8 @@ public class DirectoryIndexTest extends IdeaTestCase {
|
||||
fileTypeManager.setIgnoredFilesList(list1);
|
||||
}
|
||||
});
|
||||
|
||||
myIndex.checkConsistency();
|
||||
checkInfoNull(newDir);
|
||||
}
|
||||
finally {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@@ -354,6 +356,7 @@ public class DirectoryIndexTest extends IdeaTestCase {
|
||||
fileTypeManager.setIgnoredFilesList(list);
|
||||
}
|
||||
});
|
||||
checkInfoNotNull(newDir);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -375,6 +378,45 @@ public class DirectoryIndexTest extends IdeaTestCase {
|
||||
myIndex.checkConsistency();
|
||||
}
|
||||
|
||||
public void testModuleUnderIgnoredDir() throws IOException {
|
||||
final VirtualFile ignored = myRootVFile.createChildDirectory(this, "RCS");
|
||||
assertTrue(FileTypeManager.getInstance().isFileIgnored(ignored));
|
||||
final VirtualFile module4 = ignored.createChildDirectory(this, "module4");
|
||||
assertFalse(FileTypeManager.getInstance().isFileIgnored(module4));
|
||||
|
||||
new WriteCommandAction.Simple(getProject()) {
|
||||
@Override
|
||||
protected void run() throws Throwable {
|
||||
ModuleManager moduleManager = ModuleManager.getInstance(myProject);
|
||||
Module module = moduleManager.newModule(myRootVFile.getPath() + "/newModule.iml", StdModuleTypes.JAVA.getId());
|
||||
PsiTestUtil.addContentRoot(module, module4);
|
||||
checkInfoNull(ignored);
|
||||
checkInfo(module4, module, false, false, null, null);
|
||||
}
|
||||
}.execute().throwException();
|
||||
|
||||
}
|
||||
|
||||
public void testModuleInIgnoredDir() throws IOException {
|
||||
final VirtualFile ignored = myRootVFile.createChildDirectory(this, "RCS");
|
||||
assertTrue(FileTypeManager.getInstance().isFileIgnored(ignored));
|
||||
|
||||
new WriteCommandAction.Simple(getProject()) {
|
||||
@Override
|
||||
protected void run() throws Throwable {
|
||||
ModuleManager moduleManager = ModuleManager.getInstance(myProject);
|
||||
ModifiableModuleModel model = moduleManager.getModifiableModel();
|
||||
model.disposeModule(myModule);
|
||||
model.disposeModule(myModule2);
|
||||
model.disposeModule(myModule3);
|
||||
model.commit();
|
||||
Module module = moduleManager.newModule(myRootVFile.getPath() + "/newModule.iml", StdModuleTypes.JAVA.getId());
|
||||
PsiTestUtil.addContentRoot(module, ignored);
|
||||
checkInfo(ignored, module, false, false, null, null);
|
||||
}
|
||||
}.execute().throwException();
|
||||
}
|
||||
|
||||
public void testExcludedDirsInLibraries() {
|
||||
ProjectFileIndex index = ProjectRootManager.getInstance(myProject).getFileIndex();
|
||||
assertFalse(index.isInLibraryClasses(myExcludedLibClsDir));
|
||||
|
||||
@@ -61,7 +61,7 @@ class RootIndex {
|
||||
|
||||
Set<VirtualFile> allRoots = info.getAllRoots();
|
||||
for (VirtualFile root : allRoots) {
|
||||
List<VirtualFile> hierarchy = getHierarchy(root, allRoots);
|
||||
List<VirtualFile> hierarchy = getHierarchy(root, allRoots, info);
|
||||
Pair<DirectoryInfo, String> pair = hierarchy == null ? new Pair<DirectoryInfo, String>(null, null) : info.calcDirectoryInfo(root, hierarchy);
|
||||
cacheInfos(root, root, pair.first);
|
||||
myPackagePrefixRoots.putValue(pair.second, root);
|
||||
@@ -310,10 +310,12 @@ class RootIndex {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static List<VirtualFile> getHierarchy(VirtualFile dir, Set<VirtualFile> allRoots) {
|
||||
private static List<VirtualFile> getHierarchy(VirtualFile dir, Set<VirtualFile> allRoots, RootInfo info) {
|
||||
List<VirtualFile> hierarchy = ContainerUtil.newArrayList();
|
||||
boolean hasContentRoots = false;
|
||||
while (dir != null) {
|
||||
if (FileTypeManager.getInstance().isFileIgnored(dir)) {
|
||||
hasContentRoots |= info.contentRootOf.get(dir) != null;
|
||||
if (!hasContentRoots && FileTypeManager.getInstance().isFileIgnored(dir)) {
|
||||
return null;
|
||||
}
|
||||
if (allRoots.contains(dir)) {
|
||||
|
||||
Reference in New Issue
Block a user