[gradle][kotlin] IDEA-354292 cleanup: move test verification methods into a base test class

GitOrigin-RevId: f65a3b5458b6e6507e933ffbab2b5b301142be20
This commit is contained in:
Nikita Biriukov
2024-06-28 10:49:52 +00:00
committed by intellij-monorepo-bot
parent dee5a9223b
commit 0deb09fadb
2 changed files with 49 additions and 43 deletions
@@ -0,0 +1,47 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.run.gradle
import com.intellij.execution.PsiLocation
import com.intellij.execution.actions.ConfigurationContext
import com.intellij.execution.actions.ConfigurationFromContext
import com.intellij.execution.actions.ConfigurationFromContextImpl
import com.intellij.testFramework.assertInstanceOf
import com.intellij.testFramework.runInEdtAndWait
import org.jetbrains.kotlin.gradle.AbstractKotlinGradleCodeInsightBaseTest
import org.jetbrains.kotlin.idea.test.util.elementByOffset
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration
import kotlin.test.assertEquals
import kotlin.test.assertTrue
abstract class AbstractKotlinGradleRunConfigurationProducerBaseTest : AbstractKotlinGradleCodeInsightBaseTest() {
protected fun verifyGradleConfigurationAtCaret(taskName: String) {
runInEdtAndWait {
codeInsightFixture.configureFromExistingVirtualFile(getFile("build.gradle.kts"))
val location = PsiLocation(codeInsightFixture.elementByOffset)
val context = ConfigurationContext.createEmptyContextForLocation(location)
val configurationFromContext = context.configurationsFromContext?.singleOrNull()
?: error("Unable to find a single configuration from context")
verifyGradleRunConfiguration(configurationFromContext, taskName)
verifyConfigurationProducer(configurationFromContext, context)
}
}
private fun verifyGradleRunConfiguration(configurationFromContext: ConfigurationFromContext, taskName: String) {
val gradleConfiguration = assertInstanceOf<GradleRunConfiguration>(configurationFromContext.configuration)
assertEquals(listOf(taskName), gradleConfiguration.settings.taskNames,
"GradleRunConfiguration must contain only expected task name")
assertEquals("${project.name} [$taskName]", gradleConfiguration.name)
}
private fun verifyConfigurationProducer(
configurationFromContext: ConfigurationFromContext,
context: ConfigurationContext,
) {
val producer = configurationFromContext.safeAs<ConfigurationFromContextImpl>()?.configurationProducer
?: error("Unable to find a RunConfigurationProducer for configuration")
assertTrue(producer.isConfigurationFromContext(configurationFromContext.configuration, context),
"Producer must be able to identify a configuration that was created by it")
}
}
@@ -1,27 +1,15 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.run.gradle
import com.intellij.execution.PsiLocation
import com.intellij.execution.actions.ConfigurationContext
import com.intellij.execution.actions.ConfigurationFromContext
import com.intellij.execution.actions.ConfigurationFromContextImpl
import com.intellij.testFramework.assertInstanceOf
import com.intellij.testFramework.runInEdtAndWait
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.AbstractKotlinGradleCodeInsightBaseTest
import org.jetbrains.kotlin.idea.test.util.elementByOffset
import org.jetbrains.kotlin.idea.testFramework.gradle.assumeThatKotlinDslScriptsModelImportIsSupported
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration
import org.jetbrains.plugins.gradle.testFramework.annotations.AllGradleVersionsSource
import org.junit.jupiter.params.ParameterizedTest
import kotlin.test.assertEquals
import kotlin.test.assertTrue
/**
* @see org.jetbrains.kotlin.idea.gradleJava.run.KotlinGradleTaskRunConfigurationProducer
*/
abstract class AbstractKotlinGradleTaskRunConfigurationProducerTest : AbstractKotlinGradleCodeInsightBaseTest() {
abstract class AbstractKotlinGradleTaskRunConfigurationProducerTest : AbstractKotlinGradleRunConfigurationProducerBaseTest() {
@ParameterizedTest
@AllGradleVersionsSource("""
@@ -45,36 +33,7 @@ abstract class AbstractKotlinGradleTaskRunConfigurationProducerTest : AbstractKo
assumeThatKotlinDslScriptsModelImportIsSupported(gradleVersion)
testKotlinDslEmptyProject(gradleVersion) {
writeTextAndCommit("build.gradle.kts", taskDefinition)
verifyConfigurationAtCaret(taskName)
verifyGradleConfigurationAtCaret(taskName)
}
}
private fun verifyConfigurationAtCaret(taskName: String) {
runInEdtAndWait {
codeInsightFixture.configureFromExistingVirtualFile(getFile("build.gradle.kts"))
val location = PsiLocation(codeInsightFixture.elementByOffset)
val context = ConfigurationContext.createEmptyContextForLocation(location)
val configurationFromContext = context.configurationsFromContext?.singleOrNull()
?: error("Unable to find a single configuration from context")
verifyGradleRunConfiguration(configurationFromContext, taskName)
verifyConfigurationProducer(configurationFromContext, context)
}
}
private fun verifyGradleRunConfiguration(configurationFromContext: ConfigurationFromContext, taskName: String) {
val gradleConfiguration = assertInstanceOf<GradleRunConfiguration>(configurationFromContext.configuration)
assertEquals(listOf(taskName), gradleConfiguration.settings.taskNames,
"GradleRunConfiguration must contain only expected task name")
assertEquals("${project.name} [$taskName]", gradleConfiguration.name)
}
private fun verifyConfigurationProducer(
configurationFromContext: ConfigurationFromContext,
context: ConfigurationContext,
) {
val producer = configurationFromContext.safeAs<ConfigurationFromContextImpl>()?.configurationProducer
?: error("Unable to find a RunConfigurationProducer for configuration")
assertTrue(producer.isConfigurationFromContext(configurationFromContext.configuration, context),
"Producer must be able to identify a configuration that was created by it")
}
}