Tests, Scripting: extend custom def test infra with gradle-like def

to be able to test gradle-like DSL
This commit is contained in:
Ilya Chernikov
2024-03-13 16:49:23 +01:00
committed by Space Team
parent 988edab7a0
commit 60e38d592c
6 changed files with 61 additions and 3 deletions
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.directives.model.StringDirective
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.RuntimeClasspathProvider
@@ -30,9 +31,15 @@ class ScriptWithCustomDefEnvironmentConfigurator(testServices: TestServices) : E
configuration.addJvmClasspathRoots(testScriptDefinitionClasspath)
val dirSplitRegex = Regex(" *, *")
ScriptingTestDirectives.directivesToPassViaEnvironment.forEach { (directive, envName) ->
module.directives[directive].flatMap { it.split(dirSplitRegex).filter { it.isNotEmpty() } }.let {
if (it.isNotEmpty()) {
configuration.put(ScriptingConfigurationKeys.LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION, envName, it)
if (directive is StringDirective) {
module.directives[directive].flatMap { it.split(dirSplitRegex).filter { it.isNotEmpty() } }.let {
if (it.isNotEmpty()) {
configuration.put(ScriptingConfigurationKeys.LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION, envName, it)
}
}
} else {
if (directive in module.directives) {
configuration.put(ScriptingConfigurationKeys.LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION, envName, "true")
}
}
}
@@ -10,10 +10,12 @@ import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
object ScriptingTestDirectives : SimpleDirectivesContainer() {
val SCRIPT_DEFAULT_IMPORTS by stringDirective("Default imports", multiLine = true)
val SCRIPT_PROVIDED_PROPERTIES by stringDirective("Provided properties", multiLine = true)
val GRADLE_LIKE_SCRIPT by directive("Provided properties")
val directivesToPassViaEnvironment =
listOf(
SCRIPT_DEFAULT_IMPORTS to "defaultImports",
SCRIPT_PROVIDED_PROPERTIES to "providedProperties",
GRADLE_LIKE_SCRIPT to "gradleLikeScript",
)
}