| 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)); |
| } |
| }); |
| } |
| } |