From 475fee21366405abfea5db5327dc206cb87c3947 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 13 May 2015 20:14:39 +0300 Subject: [PATCH] Tomcat tests: locate JDK by env variables if tests are running under JRE --- .../intellij/testFramework/IdeaTestUtil.java | 30 ++++++++--- .../importing/GradleImportingTestCase.java | 53 ++++++------------- .../builder/AbstractModelBuilderTest.java | 8 ++- 3 files changed, 43 insertions(+), 48 deletions(-) diff --git a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java index 9a068da38878..4b9950b08f0f 100644 --- a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java +++ b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java @@ -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 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; + } } diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java index 385584ce1ba0..6fe520e18ba4 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleImportingTestCase.java @@ -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 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); } } }); diff --git a/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java b/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java index 7ec617d619d1..57b3644a6b3a 100644 --- a/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java +++ b/plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/AbstractModelBuilderTest.java @@ -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 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();