blob: 1a5d5faeca7c05144e1c30baa83865da941166db [file] [log] [blame]
package com.intellij.psi.impl.cache.impl;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.PsiTestCase;
import com.intellij.testFramework.PsiTestUtil;
import java.io.File;
import java.io.IOException;
/**
* @author max
*/
public class SameSourceRootInTwoModulesTest extends PsiTestCase {
private VirtualFile myPrjDir1;
private VirtualFile mySrcDir1;
private VirtualFile myPackDir;
@Override
protected void setUp() throws Exception {
super.setUp();
final File root = createTempDirectory();
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
try {
VirtualFile rootVFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(root.getAbsolutePath().replace(File.separatorChar, '/'));
myPrjDir1 = rootVFile.createChildDirectory(null, "prj1");
mySrcDir1 = myPrjDir1.createChildDirectory(null, "src1");
myPackDir = mySrcDir1.createChildDirectory(null, "p");
VirtualFile file1 = myPackDir.createChildData(null, "A.java");
VfsUtil.saveText(file1, "package p; public class A{ public void foo(); }");
PsiTestUtil.addContentRoot(myModule, myPrjDir1);
PsiTestUtil.addSourceRoot(myModule, mySrcDir1);
}
catch (IOException e) {
LOG.error(e);
}
}
});
}
public void testBug() {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
PsiClass psiClass = myJavaFacade.findClass("p.A");
assertEquals("p.A", psiClass.getQualifiedName());
final PsiFile psiFile = myPsiManager.findFile(myPackDir.findChild("A.java"));
psiFile.getChildren();
assertEquals(psiFile, psiClass.getContainingFile());
VirtualFile file = psiFile.getVirtualFile();
assertEquals(myModule, ModuleUtil.findModuleForFile(file, myProject));
Module anotherModule = createModule("another");
myFilesToDelete.add(new File(anotherModule.getModuleFilePath()));
PsiTestUtil.addSourceRoot(anotherModule, mySrcDir1);
assertEquals(anotherModule, ModuleUtil.findModuleForFile(file, myProject));
}
});
}
}