From 9a4a6568ea052508faf394900f7bc47a19dd7c6e Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 16 Sep 2015 19:16:41 +0300 Subject: [PATCH] correctly detect java version for mockJDK --- .../intellij/testFramework/IdeaTestUtil.java | 18 +++++++++++++++--- .../impl/JavaModuleFixtureBuilderImpl.java | 7 +++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java index 4b9950b08f0f..d850be711527 100644 --- a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java +++ b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java @@ -25,10 +25,12 @@ import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.java.LanguageLevel; +import com.intellij.util.PathUtil; import com.intellij.util.SystemProperties; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -40,6 +42,8 @@ import java.util.List; import static org.junit.Assume.assumeTrue; public class IdeaTestUtil extends PlatformTestUtil { + private static final String MOCK_JDK_DIR_NAME_PREFIX = "mockJDK-"; + public static void main(String[] args) { printDetectedPerformanceTimings(); } @@ -89,15 +93,23 @@ public class IdeaTestUtil extends PlatformTestUtil { } public static File getMockJdk14Path() { - return getPathForJdkNamed("mockJDK-1.4"); + return getPathForJdkNamed(MOCK_JDK_DIR_NAME_PREFIX + "1.4"); } public static File getMockJdk17Path() { - return getPathForJdkNamed("mockJDK-1.7"); + return getPathForJdkNamed(MOCK_JDK_DIR_NAME_PREFIX + "1.7"); } public static File getMockJdk18Path() { - return getPathForJdkNamed("mockJDK-1.8"); + return getPathForJdkNamed(MOCK_JDK_DIR_NAME_PREFIX + "1.8"); + } + + public static String getMockJdkVersion(String path) { + String name = PathUtil.getFileName(path); + if (name.startsWith(MOCK_JDK_DIR_NAME_PREFIX)) { + return "java " + StringUtil.trimStart(name, MOCK_JDK_DIR_NAME_PREFIX); + } + return null; } private static File getPathForJdkNamed(String name) { diff --git a/java/testFramework/src/com/intellij/testFramework/fixtures/impl/JavaModuleFixtureBuilderImpl.java b/java/testFramework/src/com/intellij/testFramework/fixtures/impl/JavaModuleFixtureBuilderImpl.java index c196b832dec2..f527677f23e6 100644 --- a/java/testFramework/src/com/intellij/testFramework/fixtures/impl/JavaModuleFixtureBuilderImpl.java +++ b/java/testFramework/src/com/intellij/testFramework/fixtures/impl/JavaModuleFixtureBuilderImpl.java @@ -27,6 +27,7 @@ import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; @@ -145,14 +146,12 @@ abstract class JavaModuleFixtureBuilderImpl extends Mod if (myJdk != null) { VfsRootAccess.allowRootAccessTemporarily(module, myJdk); jdk = JavaSdk.getInstance().createJdk(module.getName() + "_jdk", myJdk, false); - ((ProjectJdkImpl)jdk).setVersionString("java 1.5"); + ((ProjectJdkImpl)jdk).setVersionString(StringUtil.notNullize(IdeaTestUtil.getMockJdkVersion(myJdk), "java 1.5")); } else { jdk = IdeaTestUtil.getMockJdk17(); } - if (jdk != null) { - model.setSdk(new MockJdkWrapper(CompilerConfigurationImpl.getTestsExternalCompilerHome(), jdk)); - } + model.setSdk(new MockJdkWrapper(CompilerConfigurationImpl.getTestsExternalCompilerHome(), jdk)); if (myLanguageLevel != null) { model.getModuleExtension(LanguageLevelModuleExtension.class).setLanguageLevel(myLanguageLevel);