diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt index 6786138e74d..f4044e56312 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt @@ -137,7 +137,9 @@ abstract class GradleImportingTestCase : ExternalSystemImportingTestCase() { val jdkHomeDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(File(myJdkHome))!! val jdk = SdkConfigurationUtil.setupSdk(arrayOfNulls(0), jdkHomeDir, JavaSdk.getInstance(), true, null, GRADLE_JDK_NAME) TestCase.assertNotNull("Cannot create JDK for $myJdkHome", jdk) - jdkTable.addJdk(jdk!!) + if (!jdkTable.allJdks.contains(jdk)) { + jdkTable.addJdk(jdk!!, testRootDisposable) + } FileTypeManager.getInstance().associateExtension(GroovyFileType.GROOVY_FILE_TYPE, "gradle") } diff --git a/idea/idea-new-project-wizard/tests/org/jetbrains/kotlin/tools/projectWizard/wizard/AbstractNewWizardProjectImportTest.kt b/idea/idea-new-project-wizard/tests/org/jetbrains/kotlin/tools/projectWizard/wizard/AbstractNewWizardProjectImportTest.kt index d2fdcf953a2..9c231295c98 100644 --- a/idea/idea-new-project-wizard/tests/org/jetbrains/kotlin/tools/projectWizard/wizard/AbstractNewWizardProjectImportTest.kt +++ b/idea/idea-new-project-wizard/tests/org/jetbrains/kotlin/tools/projectWizard/wizard/AbstractNewWizardProjectImportTest.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.projectRoots.SimpleJavaSdkType import com.intellij.testFramework.IdeaTestUtil import com.intellij.testFramework.PlatformTestCase import org.jetbrains.kotlin.idea.test.KotlinSdkCreationChecker +import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.test.testFramework.runWriteAction import org.jetbrains.kotlin.tools.projectWizard.cli.* import org.jetbrains.kotlin.tools.projectWizard.core.service.Services @@ -40,7 +41,7 @@ abstract class AbstractNewWizardProjectImportTest : PlatformTestCase() { super.setUp() runWriteAction { val sdk = SimpleJavaSdkType().createJdk(SDK_NAME, IdeaTestUtil.requireRealJdkHome()) - ProjectJdkTable.getInstance().addJdk(sdk, project) + PluginTestCaseBase.addJdk(testRootDisposable, { sdk }) } sdkCreationChecker = KotlinSdkCreationChecker() } diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt b/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt index 3928717d5c8..91b9a9ffd85 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt +++ b/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea.framework +import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.projectRoots.* import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl @@ -27,7 +28,7 @@ class KotlinSdkType : SdkType("KotlinSDK") { get() = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath @JvmOverloads - fun setUpIfNeeded(checkIfNeeded: () -> Boolean = { true }) { + fun setUpIfNeeded(disposable: Disposable? = null, checkIfNeeded: () -> Boolean = { true }) { val projectSdks: Array = ProjectJdkTable.getInstance().allJdks if (projectSdks.any { it.sdkType is KotlinSdkType }) return if (!checkIfNeeded()) return // do not create Kotlin SDK @@ -40,7 +41,11 @@ class KotlinSdkType : SdkType("KotlinSDK") { ApplicationManager.getApplication().invokeAndWait { runWriteAction { if (ProjectJdkTable.getInstance().allJdks.any { it.sdkType is KotlinSdkType }) return@runWriteAction - ProjectJdkTable.getInstance().addJdk(newJdk) + if (disposable != null) { + ProjectJdkTable.getInstance().addJdk(newJdk, disposable) + } else { + ProjectJdkTable.getInstance().addJdk(newJdk) + } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt.192 b/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt.192 index b88d8499bd2..6797cda9755 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt.192 +++ b/idea/src/org/jetbrains/kotlin/idea/framework/KotlinSdkType.kt.192 @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea.framework +import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.projectRoots.* import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl @@ -27,7 +28,7 @@ class KotlinSdkType : SdkType("KotlinSDK") { get() = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath @JvmOverloads - fun setUpIfNeeded(checkIfNeeded: () -> Boolean = { true }) { + fun setUpIfNeeded(disposable: Disposable? = null, checkIfNeeded: () -> Boolean = { true }) { val projectSdks: Array = ProjectJdkTable.getInstance().allJdks if (projectSdks.any { it.sdkType is KotlinSdkType }) return if (!checkIfNeeded()) return // do not create Kotlin SDK @@ -40,7 +41,11 @@ class KotlinSdkType : SdkType("KotlinSDK") { ApplicationManager.getApplication().invokeAndWait { runWriteAction { if (ProjectJdkTable.getInstance().allJdks.any { it.sdkType is KotlinSdkType }) return@runWriteAction - ProjectJdkTable.getInstance().addJdk(newJdk) + if (disposable != null) { + ProjectJdkTable.getInstance().addJdk(newJdk, disposable) + } else { + ProjectJdkTable.getInstance().addJdk(newJdk) + } } } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfoTest.kt b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfoTest.kt index f6e98fa0aac..8eef5ef4b81 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfoTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfoTest.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.idea.caches.project.ModuleTestSourceInfo import org.jetbrains.kotlin.idea.framework.CommonLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.platform +import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.* import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe @@ -349,10 +350,8 @@ class IdeaModuleInfoTest : ModuleTestCase() { fun testSdkForScript() { // The first known jdk will be used for scripting if there is no jdk in the project runWriteAction { - val jdkTable = getProjectJdkTableSafe() - - jdkTable.addJdk(mockJdk6()) - jdkTable.addJdk(mockJdk9()) + addJdk(testRootDisposable, ::mockJdk6) + addJdk(testRootDisposable, ::mockJdk9) ProjectRootManager.getInstance(project).projectSdk = null } @@ -366,10 +365,8 @@ class IdeaModuleInfoTest : ModuleTestCase() { fun testSdkForScriptProjectSdk() { runWriteAction { - val jdkTable = getProjectJdkTableSafe() - - jdkTable.addJdk(mockJdk6()) - jdkTable.addJdk(mockJdk9()) + addJdk(testRootDisposable, ::mockJdk6) + addJdk(testRootDisposable, ::mockJdk9) ProjectRootManager.getInstance(project).projectSdk = mockJdk9() } @@ -383,10 +380,8 @@ class IdeaModuleInfoTest : ModuleTestCase() { val a = module("a") runWriteAction { - val jdkTable = getProjectJdkTableSafe() - - jdkTable.addJdk(mockJdk6()) - jdkTable.addJdk(mockJdk9()) + addJdk(testRootDisposable, ::mockJdk6) + addJdk(testRootDisposable, ::mockJdk9) ProjectRootManager.getInstance(project).projectSdk = mockJdk6() with(ModuleRootManager.getInstance(a).modifiableModel) { @@ -493,8 +488,6 @@ class IdeaModuleInfoTest : ModuleTestCase() { } override fun tearDown() { - clearSdkTable(testRootDisposable) - VfsRootAccess.disallowRootAccess(KotlinTestUtils.getHomeDirectory()) super.tearDown() diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt b/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt index e28c355380a..045e0fefb07 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt @@ -21,6 +21,7 @@ import junit.framework.TestCase import org.jetbrains.kotlin.idea.configuration.KotlinWithLibraryConfigurator.FileState import org.jetbrains.kotlin.idea.framework.KotlinSdkType import org.jetbrains.kotlin.idea.test.PluginTestCaseBase +import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.* import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.isIgnoredInDatabaseWithLog @@ -47,18 +48,14 @@ abstract class AbstractConfigureKotlinTest : PlatformTestCase() { override fun initApplication() { super.initApplication() - KotlinSdkType.setUpIfNeeded() + KotlinSdkType.setUpIfNeeded(testRootDisposable) ApplicationManager.getApplication().runWriteAction { - val jdkTable = getProjectJdkTableSafe() - - jdkTable.addJdk(PluginTestCaseBase.mockJdk6()) - jdkTable.addJdk(PluginTestCaseBase.mockJdk8()) - jdkTable.addJdk(PluginTestCaseBase.mockJdk9()) + addJdk(testRootDisposable, ::mockJdk6) + addJdk(testRootDisposable, ::mockJdk8) + addJdk(testRootDisposable, ::mockJdk9) } - PluginTestCaseBase.clearSdkTable(testRootDisposable) - val tempLibDir = FileUtil.createTempDirectory("temp", null) PathMacros.getInstance().setMacro(TEMP_DIR_MACRO_KEY, FileUtilRt.toSystemDependentName(tempLibDir.absolutePath)) } diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt index e7776b4e65a..d10bdb1ae76 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt @@ -77,12 +77,11 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() { } private val sdk by lazy { - val jdk = PluginTestCaseBase.jdk(TestJdkKind.MOCK_JDK) runWriteAction { - getProjectJdkTableSafe().addJdk(jdk, testRootDisposable) - ProjectRootManager.getInstance(project).projectSdk = jdk + val sdk = PluginTestCaseBase.addJdk(testRootDisposable) { PluginTestCaseBase.jdk(TestJdkKind.MOCK_JDK) } + ProjectRootManager.getInstance(project).projectSdk = sdk + sdk } - jdk } protected fun configureScriptFile(path: String) { @@ -225,10 +224,8 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() { else -> TestJdkKind.MOCK_JDK } runWriteAction { - val jdk = PluginTestCaseBase.jdk(jdkKind) - val projectJdkTable = getProjectJdkTableSafe() - if (jdk !in projectJdkTable.allJdks) { - projectJdkTable.addJdk(jdk, testRootDisposable) + val jdk = PluginTestCaseBase.addJdk(testRootDisposable) { + PluginTestCaseBase.jdk(jdkKind) } env["javaHome"] = File(jdk.homePath) }