correctly detect java version for mockJDK

This commit is contained in:
nik
2015-09-17 10:00:23 +03:00
parent 65cf127507
commit 9a4a6568ea
2 changed files with 18 additions and 7 deletions
@@ -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) {
@@ -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<T extends ModuleFixture> 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);