Fix sdk duplication in ProjectSdkTable in tests

This commit is contained in:
Natalia Selezneva
2020-05-19 16:22:12 +03:00
committed by Sergey Rostov
parent 72aba2fce2
commit 5212054af6
7 changed files with 36 additions and 36 deletions
@@ -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")
}
@@ -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()
}
@@ -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<Sdk> = 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)
}
}
}
}
@@ -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<Sdk> = 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)
}
}
}
}
@@ -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()
@@ -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))
}
@@ -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)
}