Fix sdk duplication in ProjectSdkTable in tests
This commit is contained in:
committed by
Sergey Rostov
parent
72aba2fce2
commit
5212054af6
+3
-1
@@ -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")
|
||||
|
||||
}
|
||||
|
||||
+2
-1
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user