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
@@ -7,8 +7,12 @@ package org.jetbrains.kotlin.scripting.test.definition
import kotlin.script.experimental.annotations.KotlinScript
import org.jetbrains.kotlin.scripting.definitions.getEnvironment
import org.jetbrains.kotlin.scripting.test.definition.gradleLike.CompiledKotlinBuildScript
import org.jetbrains.kotlin.scripting.test.definition.gradleLike.Project
import kotlin.script.experimental.api.*
import kotlin.script.experimental.host.ScriptingHostConfiguration
import kotlin.script.experimental.jvm.dependenciesFromCurrentContext
import kotlin.script.experimental.jvm.jvm
@Suppress("unused", "UNUSED_PARAMETER")
@KotlinScript(fileExtension = "test.kts", compilationConfiguration = ConfigurableTestScriptConfiguration::class)
@@ -23,6 +27,15 @@ class ConfigurableTestScriptConfiguration : ScriptCompilationConfiguration(
if (env == null) makeFailureResult("Unable to retrieve environment for the custom test script")
else
ScriptCompilationConfiguration(ctx.compilationConfiguration) {
env["gradleLikeScript"]?.let {
@Suppress("UNCHECKED_CAST")
defaultImports("org.jetbrains.kotlin.scripting.test.definition.gradleLike.*")
jvm {
dependenciesFromCurrentContext(wholeClasspath = true)
}
baseClass(CompiledKotlinBuildScript::class)
implicitReceivers(Project::class)
}
env["defaultImports"]?.let {
@Suppress("UNCHECKED_CAST")
defaultImports.append(it as List<String>)
@@ -0,0 +1,9 @@
/*
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.scripting.test.definition.gradleLike;
public interface PluginAware {
}
@@ -0,0 +1,16 @@
/*
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.scripting.test.definition.gradleLike
open class DefaultKotlinScript {
fun memberApi1(body: (Int) -> Int = { it }): Int = body(42)
}
open class CompiledKotlinBuildScript : DefaultKotlinScript(), PluginAware
class Project : PluginAware
@@ -0,0 +1,11 @@
/*
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.scripting.test.definition.gradleLike
@JvmOverloads
fun Project.projectApi(body: (Int) -> Int = { it }): Int = body(42)
fun staticApi(): Int = 42