diff --git a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/PluginTestCaseBase.java b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/PluginTestCaseBase.java index 0a5e93abcd4..79d818b979b 100644 --- a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/PluginTestCaseBase.java +++ b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/PluginTestCaseBase.java @@ -16,9 +16,13 @@ package org.jetbrains.kotlin.idea.test; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.projectRoots.JavaSdk; +import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess; import org.jetbrains.annotations.NotNull; @@ -56,6 +60,17 @@ public class PluginTestCaseBase { return getSdk("compiler/testData/mockJDK/jre", "Mock JDK"); } + @NotNull + public static Sdk mockJdk6() { + return getSdk("compiler/testData/mockJDK/jre", "1.6"); + } + + @NotNull + public static Sdk mockJdk8() { + // Using JDK 6, but with version 1.8 + return getSdk("compiler/testData/mockJDK/jre", "1.8"); + } + @TestOnly @NotNull public static Sdk mockJdk9() { @@ -89,4 +104,14 @@ public class PluginTestCaseBase { public static boolean isAllFilesPresentTest(@NotNull String testName) { return StringUtil.startsWithIgnoreCase(testName, "allFilesPresentIn"); } + + @TestOnly + public static void clearSdkTable(@NotNull Disposable disposable) { + Disposer.register(disposable, () -> ApplicationManager.getApplication().runWriteAction(() -> { + ProjectJdkTable jdkTable = ProjectJdkTable.getInstance(); + for (Sdk sdk : jdkTable.getAllJdks()) { + jdkTable.removeJdk(sdk); + } + })); + } } diff --git a/idea/testData/configuration/loadAndSaveProjectWithV2FacetConfig/module.iml b/idea/testData/configuration/loadAndSaveProjectWithV2FacetConfig/module.iml index f3f20b7cbfe..bf66cb0dbcc 100644 --- a/idea/testData/configuration/loadAndSaveProjectWithV2FacetConfig/module.iml +++ b/idea/testData/configuration/loadAndSaveProjectWithV2FacetConfig/module.iml @@ -20,6 +20,7 @@ + diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt b/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt index 241adee20da..dd9edc4b6b2 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt @@ -16,10 +16,14 @@ package org.jetbrains.kotlin.idea.configuration +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.PathMacros import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project +import com.intellij.openapi.projectRoots.ProjectJdkTable +import com.intellij.openapi.projectRoots.Sdk +import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.io.FileUtilRt import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess @@ -27,6 +31,7 @@ import com.intellij.testFramework.PlatformTestCase import com.intellij.testFramework.UsefulTestCase import junit.framework.TestCase import org.jetbrains.kotlin.idea.configuration.KotlinWithLibraryConfigurator.FileState +import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.utils.PathUtil import java.io.File import java.io.IOException @@ -63,6 +68,14 @@ abstract class AbstractConfigureKotlinTest : PlatformTestCase() { override fun initApplication() { super.initApplication() + ApplicationManager.getApplication().runWriteAction { + ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk6()) + ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk8()) + ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk9()) + } + + PluginTestCaseBase.clearSdkTable(testRootDisposable) + val tempLibDir = FileUtil.createTempDirectory("temp", null) PathMacros.getInstance().setMacro(TEMP_DIR_MACRO_KEY, FileUtilRt.toSystemDependentName(tempLibDir.absolutePath)) } @@ -241,4 +254,9 @@ abstract class AbstractConfigureKotlinTest : PlatformTestCase() { return tempPath + '/' + relativePath } } + + override fun getTestProjectJdk(): Sdk { + val projectRootManager = ProjectRootManager.getInstance(project) + return projectRootManager.projectSdk ?: throw IllegalStateException("SDK ${projectRootManager.projectSdkName} was not found") + } }