mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
130 lines
5.1 KiB
Java
130 lines
5.1 KiB
Java
package com.intellij.psi;
|
|
|
|
import com.intellij.openapi.application.ApplicationManager;
|
|
import com.intellij.openapi.diagnostic.Logger;
|
|
import com.intellij.openapi.roots.ContentEntry;
|
|
import com.intellij.openapi.roots.ModifiableRootModel;
|
|
import com.intellij.openapi.roots.ModuleRootManager;
|
|
import com.intellij.openapi.roots.ProjectRootManager;
|
|
import com.intellij.openapi.vfs.LocalFileSystem;
|
|
import com.intellij.openapi.vfs.VirtualFile;
|
|
import com.intellij.psi.util.PsiUtilBase;
|
|
import com.intellij.testFramework.PsiTestCase;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
public class OverlappingSourceRootsTest extends PsiTestCase {
|
|
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.OverlappingSourceRootsTest");
|
|
|
|
private VirtualFile myProjectRoot;
|
|
private VirtualFile mySourceRoot1;
|
|
private VirtualFile mySourceRoot2;
|
|
private VirtualFile mySourceRoot11;
|
|
private VirtualFile mySourceRoot21;
|
|
private VirtualFile myFile1;
|
|
private VirtualFile myFile2;
|
|
private VirtualFile myFile11;
|
|
private VirtualFile myFile21;
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
|
|
ApplicationManager.getApplication().runWriteAction(
|
|
new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
|
|
try {
|
|
File dir = createTempDirectory();
|
|
|
|
myProjectRoot = LocalFileSystem.getInstance().refreshAndFindFileByPath(dir.getPath().replace(File.separatorChar, '/'));
|
|
|
|
mySourceRoot1 = myProjectRoot.createChildDirectory(null, "root1");
|
|
mySourceRoot2 = myProjectRoot.createChildDirectory(null, "root2");
|
|
mySourceRoot11 = mySourceRoot1.createChildDirectory(null, "root11");
|
|
mySourceRoot21 = mySourceRoot2.createChildDirectory(null, "root21");
|
|
|
|
final ModifiableRootModel rootModel = ModuleRootManager.getInstance(myModule).getModifiableModel();
|
|
final ContentEntry contentEntry = rootModel.addContentEntry(myProjectRoot);
|
|
contentEntry.addSourceFolder(mySourceRoot21, false);
|
|
contentEntry.addSourceFolder(mySourceRoot1, false);
|
|
contentEntry.addSourceFolder(mySourceRoot2, false);
|
|
contentEntry.addSourceFolder(mySourceRoot11, false);
|
|
rootModel.commit();
|
|
|
|
myFile1 = mySourceRoot1.createChildData(null, "File1.java");
|
|
myFile2 = mySourceRoot2.createChildData(null, "File2.java");
|
|
myFile11 = mySourceRoot11.createChildData(null, "File11.java");
|
|
myFile21 = mySourceRoot21.createChildData(null, "File21.java");
|
|
} catch (IOException e) {
|
|
LOG.error(e);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
public void testFindRoot1() {
|
|
checkFindRoot();
|
|
}
|
|
|
|
public void testFindRoot2() {
|
|
checkFindRoot();
|
|
}
|
|
|
|
private void checkFindRoot() {
|
|
PsiDirectory psiDir1 = myPsiManager.findDirectory(mySourceRoot1);
|
|
PsiDirectory psiDir2 = myPsiManager.findDirectory(mySourceRoot2);
|
|
PsiDirectory psiDir11 = myPsiManager.findDirectory(mySourceRoot11);
|
|
PsiDirectory psiDir21 = myPsiManager.findDirectory(mySourceRoot21);
|
|
|
|
assertEquals(psiDir1, findSourceRootDirectory(psiDir1));
|
|
assertEquals(psiDir2, findSourceRootDirectory(psiDir2));
|
|
assertEquals(psiDir11, findSourceRootDirectory(psiDir11));
|
|
assertEquals(psiDir21, findSourceRootDirectory(psiDir21));
|
|
|
|
PsiFile psiFile1 = myPsiManager.findFile(myFile1);
|
|
PsiFile psiFile2 = myPsiManager.findFile(myFile2);
|
|
PsiFile psiFile11 = myPsiManager.findFile(myFile11);
|
|
PsiFile psiFile21 = myPsiManager.findFile(myFile21);
|
|
|
|
assertEquals(psiDir1, findSourceRootDirectory(psiFile1));
|
|
assertEquals(psiDir2, findSourceRootDirectory(psiFile2));
|
|
assertEquals(psiDir11, findSourceRootDirectory(psiFile11));
|
|
assertEquals(psiDir21, findSourceRootDirectory(psiFile21));
|
|
}
|
|
|
|
private PsiDirectory findSourceRootDirectory(PsiElement element) {
|
|
final VirtualFile virtualFile = PsiUtilBase.getVirtualFile(element);
|
|
final VirtualFile sourceRoot = ProjectRootManager.getInstance(myProject).getFileIndex().getSourceRootForFile(virtualFile);
|
|
return myPsiManager.findDirectory(sourceRoot);
|
|
}
|
|
|
|
public void testFindPackage1() {
|
|
checkFindPackage();
|
|
}
|
|
|
|
public void testFindPackage2() {
|
|
checkFindPackage();
|
|
}
|
|
|
|
private void checkFindPackage() {
|
|
PsiDirectory psiDir1 = myPsiManager.findDirectory(mySourceRoot1);
|
|
PsiDirectory psiDir2 = myPsiManager.findDirectory(mySourceRoot2);
|
|
PsiDirectory psiDir11 = myPsiManager.findDirectory(mySourceRoot11);
|
|
PsiDirectory psiDir21 = myPsiManager.findDirectory(mySourceRoot21);
|
|
|
|
String pack1 = JavaDirectoryService.getInstance().getPackage(psiDir1).getQualifiedName();
|
|
String pack2 = JavaDirectoryService.getInstance().getPackage(psiDir2).getQualifiedName();
|
|
String pack11 = JavaDirectoryService.getInstance().getPackage(psiDir11).getQualifiedName();
|
|
String pack21 = JavaDirectoryService.getInstance().getPackage(psiDir21).getQualifiedName();
|
|
|
|
assertEquals("", pack1);
|
|
assertEquals("", pack2);
|
|
assertEquals("", pack11);
|
|
assertEquals("", pack21);
|
|
}
|
|
}
|