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 jdkHomeDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(File(myJdkHome))!!
|
||||||
val jdk = SdkConfigurationUtil.setupSdk(arrayOfNulls(0), jdkHomeDir, JavaSdk.getInstance(), true, null, GRADLE_JDK_NAME)
|
val jdk = SdkConfigurationUtil.setupSdk(arrayOfNulls(0), jdkHomeDir, JavaSdk.getInstance(), true, null, GRADLE_JDK_NAME)
|
||||||
TestCase.assertNotNull("Cannot create JDK for $myJdkHome", jdk)
|
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")
|
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.IdeaTestUtil
|
||||||
import com.intellij.testFramework.PlatformTestCase
|
import com.intellij.testFramework.PlatformTestCase
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinSdkCreationChecker
|
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.test.testFramework.runWriteAction
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.cli.*
|
import org.jetbrains.kotlin.tools.projectWizard.cli.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.Services
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.Services
|
||||||
@@ -40,7 +41,7 @@ abstract class AbstractNewWizardProjectImportTest : PlatformTestCase() {
|
|||||||
super.setUp()
|
super.setUp()
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
val sdk = SimpleJavaSdkType().createJdk(SDK_NAME, IdeaTestUtil.requireRealJdkHome())
|
val sdk = SimpleJavaSdkType().createJdk(SDK_NAME, IdeaTestUtil.requireRealJdkHome())
|
||||||
ProjectJdkTable.getInstance().addJdk(sdk, project)
|
PluginTestCaseBase.addJdk(testRootDisposable, { sdk })
|
||||||
}
|
}
|
||||||
sdkCreationChecker = KotlinSdkCreationChecker()
|
sdkCreationChecker = KotlinSdkCreationChecker()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.framework
|
package org.jetbrains.kotlin.idea.framework
|
||||||
|
|
||||||
|
import com.intellij.openapi.Disposable
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.projectRoots.*
|
import com.intellij.openapi.projectRoots.*
|
||||||
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl
|
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl
|
||||||
@@ -27,7 +28,7 @@ class KotlinSdkType : SdkType("KotlinSDK") {
|
|||||||
get() = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath
|
get() = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun setUpIfNeeded(checkIfNeeded: () -> Boolean = { true }) {
|
fun setUpIfNeeded(disposable: Disposable? = null, checkIfNeeded: () -> Boolean = { true }) {
|
||||||
val projectSdks: Array<Sdk> = ProjectJdkTable.getInstance().allJdks
|
val projectSdks: Array<Sdk> = ProjectJdkTable.getInstance().allJdks
|
||||||
if (projectSdks.any { it.sdkType is KotlinSdkType }) return
|
if (projectSdks.any { it.sdkType is KotlinSdkType }) return
|
||||||
if (!checkIfNeeded()) return // do not create Kotlin SDK
|
if (!checkIfNeeded()) return // do not create Kotlin SDK
|
||||||
@@ -40,7 +41,11 @@ class KotlinSdkType : SdkType("KotlinSDK") {
|
|||||||
ApplicationManager.getApplication().invokeAndWait {
|
ApplicationManager.getApplication().invokeAndWait {
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
if (ProjectJdkTable.getInstance().allJdks.any { it.sdkType is KotlinSdkType }) return@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
|
package org.jetbrains.kotlin.idea.framework
|
||||||
|
|
||||||
|
import com.intellij.openapi.Disposable
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.projectRoots.*
|
import com.intellij.openapi.projectRoots.*
|
||||||
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl
|
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl
|
||||||
@@ -27,7 +28,7 @@ class KotlinSdkType : SdkType("KotlinSDK") {
|
|||||||
get() = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath
|
get() = PathUtil.kotlinPathsForIdeaPlugin.homePath.absolutePath
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun setUpIfNeeded(checkIfNeeded: () -> Boolean = { true }) {
|
fun setUpIfNeeded(disposable: Disposable? = null, checkIfNeeded: () -> Boolean = { true }) {
|
||||||
val projectSdks: Array<Sdk> = ProjectJdkTable.getInstance().allJdks
|
val projectSdks: Array<Sdk> = ProjectJdkTable.getInstance().allJdks
|
||||||
if (projectSdks.any { it.sdkType is KotlinSdkType }) return
|
if (projectSdks.any { it.sdkType is KotlinSdkType }) return
|
||||||
if (!checkIfNeeded()) return // do not create Kotlin SDK
|
if (!checkIfNeeded()) return // do not create Kotlin SDK
|
||||||
@@ -40,7 +41,11 @@ class KotlinSdkType : SdkType("KotlinSDK") {
|
|||||||
ApplicationManager.getApplication().invokeAndWait {
|
ApplicationManager.getApplication().invokeAndWait {
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
if (ProjectJdkTable.getInstance().allJdks.any { it.sdkType is KotlinSdkType }) return@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.CommonLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.framework.platform
|
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.test.PluginTestCaseBase.*
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
|
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
|
||||||
@@ -349,10 +350,8 @@ class IdeaModuleInfoTest : ModuleTestCase() {
|
|||||||
fun testSdkForScript() {
|
fun testSdkForScript() {
|
||||||
// The first known jdk will be used for scripting if there is no jdk in the project
|
// The first known jdk will be used for scripting if there is no jdk in the project
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
val jdkTable = getProjectJdkTableSafe()
|
addJdk(testRootDisposable, ::mockJdk6)
|
||||||
|
addJdk(testRootDisposable, ::mockJdk9)
|
||||||
jdkTable.addJdk(mockJdk6())
|
|
||||||
jdkTable.addJdk(mockJdk9())
|
|
||||||
|
|
||||||
ProjectRootManager.getInstance(project).projectSdk = null
|
ProjectRootManager.getInstance(project).projectSdk = null
|
||||||
}
|
}
|
||||||
@@ -366,10 +365,8 @@ class IdeaModuleInfoTest : ModuleTestCase() {
|
|||||||
|
|
||||||
fun testSdkForScriptProjectSdk() {
|
fun testSdkForScriptProjectSdk() {
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
val jdkTable = getProjectJdkTableSafe()
|
addJdk(testRootDisposable, ::mockJdk6)
|
||||||
|
addJdk(testRootDisposable, ::mockJdk9)
|
||||||
jdkTable.addJdk(mockJdk6())
|
|
||||||
jdkTable.addJdk(mockJdk9())
|
|
||||||
|
|
||||||
ProjectRootManager.getInstance(project).projectSdk = mockJdk9()
|
ProjectRootManager.getInstance(project).projectSdk = mockJdk9()
|
||||||
}
|
}
|
||||||
@@ -383,10 +380,8 @@ class IdeaModuleInfoTest : ModuleTestCase() {
|
|||||||
val a = module("a")
|
val a = module("a")
|
||||||
|
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
val jdkTable = getProjectJdkTableSafe()
|
addJdk(testRootDisposable, ::mockJdk6)
|
||||||
|
addJdk(testRootDisposable, ::mockJdk9)
|
||||||
jdkTable.addJdk(mockJdk6())
|
|
||||||
jdkTable.addJdk(mockJdk9())
|
|
||||||
|
|
||||||
ProjectRootManager.getInstance(project).projectSdk = mockJdk6()
|
ProjectRootManager.getInstance(project).projectSdk = mockJdk6()
|
||||||
with(ModuleRootManager.getInstance(a).modifiableModel) {
|
with(ModuleRootManager.getInstance(a).modifiableModel) {
|
||||||
@@ -493,8 +488,6 @@ class IdeaModuleInfoTest : ModuleTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun tearDown() {
|
override fun tearDown() {
|
||||||
clearSdkTable(testRootDisposable)
|
|
||||||
|
|
||||||
VfsRootAccess.disallowRootAccess(KotlinTestUtils.getHomeDirectory())
|
VfsRootAccess.disallowRootAccess(KotlinTestUtils.getHomeDirectory())
|
||||||
|
|
||||||
super.tearDown()
|
super.tearDown()
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import junit.framework.TestCase
|
|||||||
import org.jetbrains.kotlin.idea.configuration.KotlinWithLibraryConfigurator.FileState
|
import org.jetbrains.kotlin.idea.configuration.KotlinWithLibraryConfigurator.FileState
|
||||||
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
|
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.test.PluginTestCaseBase.*
|
||||||
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
|
import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.isIgnoredInDatabaseWithLog
|
import org.jetbrains.kotlin.test.isIgnoredInDatabaseWithLog
|
||||||
@@ -47,18 +48,14 @@ abstract class AbstractConfigureKotlinTest : PlatformTestCase() {
|
|||||||
override fun initApplication() {
|
override fun initApplication() {
|
||||||
super.initApplication()
|
super.initApplication()
|
||||||
|
|
||||||
KotlinSdkType.setUpIfNeeded()
|
KotlinSdkType.setUpIfNeeded(testRootDisposable)
|
||||||
|
|
||||||
ApplicationManager.getApplication().runWriteAction {
|
ApplicationManager.getApplication().runWriteAction {
|
||||||
val jdkTable = getProjectJdkTableSafe()
|
addJdk(testRootDisposable, ::mockJdk6)
|
||||||
|
addJdk(testRootDisposable, ::mockJdk8)
|
||||||
jdkTable.addJdk(PluginTestCaseBase.mockJdk6())
|
addJdk(testRootDisposable, ::mockJdk9)
|
||||||
jdkTable.addJdk(PluginTestCaseBase.mockJdk8())
|
|
||||||
jdkTable.addJdk(PluginTestCaseBase.mockJdk9())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PluginTestCaseBase.clearSdkTable(testRootDisposable)
|
|
||||||
|
|
||||||
val tempLibDir = FileUtil.createTempDirectory("temp", null)
|
val tempLibDir = FileUtil.createTempDirectory("temp", null)
|
||||||
PathMacros.getInstance().setMacro(TEMP_DIR_MACRO_KEY, FileUtilRt.toSystemDependentName(tempLibDir.absolutePath))
|
PathMacros.getInstance().setMacro(TEMP_DIR_MACRO_KEY, FileUtilRt.toSystemDependentName(tempLibDir.absolutePath))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,12 +77,11 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val sdk by lazy {
|
private val sdk by lazy {
|
||||||
val jdk = PluginTestCaseBase.jdk(TestJdkKind.MOCK_JDK)
|
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
getProjectJdkTableSafe().addJdk(jdk, testRootDisposable)
|
val sdk = PluginTestCaseBase.addJdk(testRootDisposable) { PluginTestCaseBase.jdk(TestJdkKind.MOCK_JDK) }
|
||||||
ProjectRootManager.getInstance(project).projectSdk = jdk
|
ProjectRootManager.getInstance(project).projectSdk = sdk
|
||||||
|
sdk
|
||||||
}
|
}
|
||||||
jdk
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun configureScriptFile(path: String) {
|
protected fun configureScriptFile(path: String) {
|
||||||
@@ -225,10 +224,8 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
|||||||
else -> TestJdkKind.MOCK_JDK
|
else -> TestJdkKind.MOCK_JDK
|
||||||
}
|
}
|
||||||
runWriteAction {
|
runWriteAction {
|
||||||
val jdk = PluginTestCaseBase.jdk(jdkKind)
|
val jdk = PluginTestCaseBase.addJdk(testRootDisposable) {
|
||||||
val projectJdkTable = getProjectJdkTableSafe()
|
PluginTestCaseBase.jdk(jdkKind)
|
||||||
if (jdk !in projectJdkTable.allJdks) {
|
|
||||||
projectJdkTable.addJdk(jdk, testRootDisposable)
|
|
||||||
}
|
}
|
||||||
env["javaHome"] = File(jdk.homePath)
|
env["javaHome"] = File(jdk.homePath)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user