Tomcat tests: locate JDK by env variables if tests are running under JRE

This commit is contained in:
nik
2015-05-13 20:15:12 +03:00
parent 18e9a3c87c
commit 475fee2136
3 changed files with 43 additions and 48 deletions
@@ -18,21 +18,26 @@ package com.intellij.testFramework;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.JavaSdkVersion;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkModificator;
import com.intellij.openapi.projectRoots.*;
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.LanguageLevelModuleExtensionImpl;
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.vfs.JarFileSystem;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.util.SystemProperties;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.TestOnly;
import java.io.File;
import java.util.List;
import static org.junit.Assume.assumeTrue;
public class IdeaTestUtil extends PlatformTestUtil {
public static void main(String[] args) {
@@ -137,5 +142,18 @@ public class IdeaTestUtil extends PlatformTestUtil {
});
}
@NotNull
public static String requireRealJdkHome() {
String javaHome = SystemProperties.getJavaHome();
List<String> paths =
ContainerUtil.packNullables(javaHome, new File(javaHome).getParent(), System.getenv("JDK_16_x64"), System.getenv("JDK_16"));
for (String path : paths) {
if (JdkUtil.checkForJdk(new File(path))) {
return path;
}
}
assumeTrue("Cannot find JDK, checked paths: " + paths, false);
return null;
}
}
@@ -26,7 +26,6 @@ import com.intellij.openapi.externalSystem.settings.ExternalSystemSettingsListen
import com.intellij.openapi.externalSystem.test.ExternalSystemImportingTestCase;
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.JdkUtil;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil;
@@ -35,15 +34,14 @@ import com.intellij.openapi.ui.TestDialog;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.util.PathUtil;
import com.intellij.util.SystemProperties;
import com.intellij.util.containers.ContainerUtil;
import org.gradle.util.GradleVersion;
import org.gradle.wrapper.GradleWrapperMain;
import org.intellij.lang.annotations.Language;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.gradle.VersionMatcherRule;
import org.jetbrains.plugins.gradle.settings.DistributionType;
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings;
@@ -67,7 +65,6 @@ import java.util.Properties;
import static org.jetbrains.plugins.gradle.tooling.builder.AbstractModelBuilderTest.DistributionLocator;
import static org.jetbrains.plugins.gradle.tooling.builder.AbstractModelBuilderTest.SUPPORTED_GRADLE_VERSIONS;
import static org.junit.Assume.assumeThat;
import static org.junit.Assume.assumeTrue;
/**
* @author Vladislav.Soroka
@@ -75,63 +72,45 @@ import static org.junit.Assume.assumeTrue;
*/
@RunWith(value = Parameterized.class)
public abstract class GradleImportingTestCase extends ExternalSystemImportingTestCase {
private static final String GRADLE_JDK_NAME = "Gradle JDK";
private static final int GRADLE_DAEMON_TTL_MS = 10000;
@Rule public TestName name = new TestName();
@Rule public VersionMatcherRule versionMatcherRule = new VersionMatcherRule();
@Rule public VersionMatcherRule versionMatcherRule = new VersionMatcherRule();
@NotNull
@org.junit.runners.Parameterized.Parameter(0)
public String gradleVersion;
private GradleProjectSettings myProjectSettings;
private String myGradleJdkName;
@Override
public void setUp() throws Exception {
super.setUp();
assumeThat(gradleVersion, versionMatcherRule.getMatcher());
final String jdkHome = getJdkHome();
if (jdkHome != null) {
myGradleJdkName = "Gradle JDK";
assertNull("JDK " + myGradleJdkName + " already exists", ProjectJdkTable.getInstance().findJdk(myGradleJdkName));
new WriteAction() {
@Override
protected void run(@NotNull Result result) throws Throwable {
VirtualFile jdkHomeDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(jdkHome));
Sdk jdk = SdkConfigurationUtil.setupSdk(new Sdk[0], jdkHomeDir, JavaSdk.getInstance(), true, null, myGradleJdkName);
assertNotNull("Cannot create JDK for " + jdkHome, jdk);
SdkConfigurationUtil.addSdk(jdk);
}
}.execute();
}
final String jdkHome = IdeaTestUtil.requireRealJdkHome();
assertNull("JDK " + GRADLE_JDK_NAME + " already exists", ProjectJdkTable.getInstance().findJdk(GRADLE_JDK_NAME));
new WriteAction() {
@Override
protected void run(@NotNull Result result) throws Throwable {
VirtualFile jdkHomeDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(jdkHome));
Sdk jdk = SdkConfigurationUtil.setupSdk(new Sdk[0], jdkHomeDir, JavaSdk.getInstance(), true, null, GRADLE_JDK_NAME);
assertNotNull("Cannot create JDK for " + jdkHome, jdk);
SdkConfigurationUtil.addSdk(jdk);
}
}.execute();
myProjectSettings = new GradleProjectSettings();
GradleSettings.getInstance(myProject).setGradleVmOptions("-Xmx64m -XX:MaxPermSize=64m");
System.setProperty(ExternalSystemExecutionSettings.REMOTE_PROCESS_IDLE_TTL_IN_MS_KEY, String.valueOf(GRADLE_DAEMON_TTL_MS));
configureWrapper();
}
@Nullable
public static String getJdkHome() {
String javaHome = SystemProperties.getJavaHome();
List<String> paths =
ContainerUtil.packNullables(javaHome, new File(javaHome).getParent(), System.getenv("JDK_16_x64"), System.getenv("JDK_16"));
for (String path : paths) {
if (JdkUtil.checkForJdk(new File(path))) {
return path;
}
}
assumeTrue("Cannot find JDK, checked paths: " + paths, false);
return null;
}
@Override
public void tearDown() throws Exception {
try {
new WriteAction() {
@Override
protected void run(@NotNull Result result) throws Throwable {
Sdk old = ProjectJdkTable.getInstance().findJdk(myGradleJdkName);
Sdk old = ProjectJdkTable.getInstance().findJdk(GRADLE_JDK_NAME);
if (old != null) {
SdkConfigurationUtil.removeSdk(old);
}
@@ -182,7 +161,7 @@ public abstract class GradleImportingTestCase extends ExternalSystemImportingTes
public void onProjectsLinked(@NotNull Collection settings) {
final Object item = ContainerUtil.getFirstItem(settings);
if (item instanceof GradleProjectSettings) {
((GradleProjectSettings)item).setGradleJvm(myGradleJdkName);
((GradleProjectSettings)item).setGradleJvm(GRADLE_JDK_NAME);
}
}
});
@@ -18,6 +18,7 @@ package org.jetbrains.plugins.gradle.tooling.builder;
import com.intellij.openapi.externalSystem.model.ExternalProject;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.UsefulTestCase;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
@@ -31,7 +32,6 @@ import org.gradle.tooling.model.idea.IdeaModule;
import org.gradle.util.GradleVersion;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.gradle.VersionMatcherRule;
import org.jetbrains.plugins.gradle.importing.GradleImportingTestCase;
import org.jetbrains.plugins.gradle.model.BuildScriptClasspathModel;
import org.jetbrains.plugins.gradle.model.ClasspathEntryModel;
import org.jetbrains.plugins.gradle.model.ProjectImportAction;
@@ -136,10 +136,8 @@ public abstract class AbstractModelBuilderTest {
BuildActionExecuter<ProjectImportAction.AllModels> buildActionExecutor = connection.action(projectImportAction);
File initScript = GradleExecutionHelper.generateInitScript(false, getToolingExtensionClasses());
assertNotNull(initScript);
String jdkHome = GradleImportingTestCase.getJdkHome();
if (jdkHome != null) {
buildActionExecutor.setJavaHome(new File(jdkHome));
}
String jdkHome = IdeaTestUtil.requireRealJdkHome();
buildActionExecutor.setJavaHome(new File(jdkHome));
buildActionExecutor.setJvmArguments("-Xmx64m", "-XX:MaxPermSize=64m");
buildActionExecutor.withArguments("--info", "--recompile-scripts", GradleConstants.INIT_SCRIPT_CMD_OPTION, initScript.getAbsolutePath());
allModels = buildActionExecutor.run();