mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Tomcat tests: locate JDK by env variables if tests are running under JRE
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+16
-37
@@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+3
-5
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user