diff --git a/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java b/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java index 65eaa3611e1a..b6c12c93579c 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.java @@ -33,6 +33,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.ActionCallback; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.*; @@ -298,10 +299,11 @@ public class ProjectUtil { File parent = projectFile.getParentFile(); if (parent.getName().equals(Project.DIRECTORY_STORE_FOLDER)) { - projectFile = parent; parent = parent.getParentFile(); + return parent != null && FileUtil.pathsEqual(parent.getPath(), existingBaseDirPath); } - return parent != null && FileUtil.pathsEqual(parent.getPath(), existingBaseDirPath) && projectFile.getName().equals(Project.DIRECTORY_STORE_FOLDER); + return FileUtil.pathsEqual(parent.getPath(), existingBaseDirPath) && + ProjectFileType.DEFAULT_EXTENSION.equals(FileUtilRt.getExtension(projectFile.getName())); } public static void focusProjectWindow(final Project p, boolean executeIfAppInactive) { diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/project/impl/ProjectOpeningTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/project/impl/ProjectOpeningTest.java index 90aa6bc185dc..ef2f7879665b 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/project/impl/ProjectOpeningTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/project/impl/ProjectOpeningTest.java @@ -93,9 +93,11 @@ public class ProjectOpeningTest extends PlatformTestCase { assertTrue(ProjectUtil.isSameProject(projectDir.getAbsolutePath(), dirBasedProject)); assertFalse(ProjectUtil.isSameProject(createTempDir("project2").getAbsolutePath(), dirBasedProject)); File iprFilePath = new File(projectDir, "project.ipr"); - assertFalse(ProjectUtil.isSameProject(iprFilePath.getAbsolutePath(), dirBasedProject)); + assertTrue(ProjectUtil.isSameProject(iprFilePath.getAbsolutePath(), dirBasedProject)); File miscXmlFilePath = new File(projectDir, ".idea/misc.xml"); assertTrue(ProjectUtil.isSameProject(miscXmlFilePath.getAbsolutePath(), dirBasedProject)); + File someOtherFilePath = new File(projectDir, "misc.xml"); + assertFalse(ProjectUtil.isSameProject(someOtherFilePath.getAbsolutePath(), dirBasedProject)); } public void testIsSameProjectForFileBasedProject() throws IOException {