From 9a5f4522e66dbcefc1dae6c6fddd51dace572fae Mon Sep 17 00:00:00 2001 From: Brian Norman Date: Thu, 7 Mar 2024 10:51:06 -0600 Subject: [PATCH] [PowerAssert] Update Gradle extension to be more idiomatic Instead of using raw List types in the Gradle extension, ListProperty should be used instead to make it more Gradle idiomatic. Also marking the extension and all properties as experimental to allow easier changing in the future. ^KT-65952 Fixed --- .../powerAssertSimple/build.gradle.kts | 5 ++--- .../gradle/PowerAssertGradleExtension.kt | 15 ++++++++++++--- .../powerassert/gradle/PowerAssertGradlePlugin.kt | 8 +++++--- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/powerAssertSimple/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/powerAssertSimple/build.gradle.kts index 89f525b1fb9..13b1ab62735 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/powerAssertSimple/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/powerAssertSimple/build.gradle.kts @@ -34,15 +34,14 @@ kotlin { } powerAssert { - functions = listOf( - "kotlin.assert", + functions.addAll( "kotlin.test.assertTrue", "kotlin.require", "sample.AssertScope.assert", "sample.assert", "sample.dbg" ) - excludedSourceSets = listOf( + excludedSourceSets.addAll( "commonMain", "jvmMain", "jsMain", diff --git a/libraries/tools/kotlin-power-assert/src/common/kotlin/org/jetbrains/kotlin/powerassert/gradle/PowerAssertGradleExtension.kt b/libraries/tools/kotlin-power-assert/src/common/kotlin/org/jetbrains/kotlin/powerassert/gradle/PowerAssertGradleExtension.kt index 93c291b5f81..4c22611962b 100644 --- a/libraries/tools/kotlin-power-assert/src/common/kotlin/org/jetbrains/kotlin/powerassert/gradle/PowerAssertGradleExtension.kt +++ b/libraries/tools/kotlin-power-assert/src/common/kotlin/org/jetbrains/kotlin/powerassert/gradle/PowerAssertGradleExtension.kt @@ -19,7 +19,16 @@ package org.jetbrains.kotlin.powerassert.gradle -open class PowerAssertGradleExtension { - var functions: List = listOf("kotlin.assert") - var excludedSourceSets: List = listOf() +import org.gradle.api.model.ObjectFactory +import org.gradle.api.provider.ListProperty +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import javax.inject.Inject + +@ExperimentalKotlinGradlePluginApi +abstract class PowerAssertGradleExtension @Inject constructor( + objectFactory: ObjectFactory, +) { + val functions: ListProperty = objectFactory.listProperty(String::class.java).convention(listOf("kotlin.assert")) + + val excludedSourceSets: ListProperty = objectFactory.listProperty(String::class.java).convention(emptyList()) } diff --git a/libraries/tools/kotlin-power-assert/src/common/kotlin/org/jetbrains/kotlin/powerassert/gradle/PowerAssertGradlePlugin.kt b/libraries/tools/kotlin-power-assert/src/common/kotlin/org/jetbrains/kotlin/powerassert/gradle/PowerAssertGradlePlugin.kt index 5a310311b41..7088bb1a9b3 100644 --- a/libraries/tools/kotlin-power-assert/src/common/kotlin/org/jetbrains/kotlin/powerassert/gradle/PowerAssertGradlePlugin.kt +++ b/libraries/tools/kotlin-power-assert/src/common/kotlin/org/jetbrains/kotlin/powerassert/gradle/PowerAssertGradlePlugin.kt @@ -21,8 +21,10 @@ package org.jetbrains.kotlin.powerassert.gradle import org.gradle.api.Project import org.gradle.api.provider.Provider +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.plugin.* +@OptIn(ExperimentalKotlinGradlePluginApi::class) class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin { companion object { private const val POWER_ASSERT_ARTIFACT_NAME = "kotlin-power-assert-compiler-plugin-embeddable" @@ -37,7 +39,7 @@ class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin { override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean { val project = kotlinCompilation.target.project val extension = project.extensions.getByType(PowerAssertGradleExtension::class.java) - return extension.excludedSourceSets.none { it == kotlinCompilation.defaultSourceSet.name } + return extension.excludedSourceSets.get().none { it == kotlinCompilation.defaultSourceSet.name } } override fun applyToCompilation( @@ -45,8 +47,8 @@ class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin { ): Provider> { val project = kotlinCompilation.target.project val extension = project.extensions.getByType(PowerAssertGradleExtension::class.java) - return project.provider { - extension.functions.map { + return extension.functions.map { functions -> + functions.map { SubpluginOption(key = FUNCTION_ARG_NAME, value = it) } }