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")
+ }
}