From ee1370925f0986a36057a19338669feaab6eb92e Mon Sep 17 00:00:00 2001 From: Brian Norman Date: Sun, 13 Mar 2022 16:00:10 -0500 Subject: [PATCH] Allow excluding Kotlin source sets from transformation --- README.md | 27 +++++++++++++++++++ .../bnorm/power/PowerAssertGradleExtension.kt | 1 + .../bnorm/power/PowerAssertGradlePlugin.kt | 6 ++++- sample/build.gradle.kts | 6 +++++ .../kotlin/com/bnorm/power/Person.kt | 5 ++++ .../kotlin/com/bnorm/power/PowerAssertTest.kt | 9 +++++++ 6 files changed, 53 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a4414b5f416..724f317c9ee 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,33 @@ kotlinPowerAssert { } ``` +You can also exclude Gradle source sets from being transformed by the plugin, +where those source sets can be specified by name. + +```kotlin +// Kotlin DSL +configure { + excludedSourceSets = listOf( + "commonMain", + "jvmMain", + "jsMain", + "nativeMain" + ) +} +``` + +```groovy +// Groovy +kotlinPowerAssert { + excludedSourceSets = [ + "commonMain", + "jvmMain", + "jsMain", + "nativeMain" + ] +} +``` + ## Compatibility The Kotlin compiler plugin API is unstable and each new version of Kotlin can diff --git a/kotlin-power-assert-gradle/src/main/kotlin/com/bnorm/power/PowerAssertGradleExtension.kt b/kotlin-power-assert-gradle/src/main/kotlin/com/bnorm/power/PowerAssertGradleExtension.kt index 68976c0207e..151f9cfa1c5 100644 --- a/kotlin-power-assert-gradle/src/main/kotlin/com/bnorm/power/PowerAssertGradleExtension.kt +++ b/kotlin-power-assert-gradle/src/main/kotlin/com/bnorm/power/PowerAssertGradleExtension.kt @@ -18,4 +18,5 @@ package com.bnorm.power open class PowerAssertGradleExtension { var functions: List = listOf("kotlin.assert") + var excludedSourceSets: List = listOf() } diff --git a/kotlin-power-assert-gradle/src/main/kotlin/com/bnorm/power/PowerAssertGradlePlugin.kt b/kotlin-power-assert-gradle/src/main/kotlin/com/bnorm/power/PowerAssertGradlePlugin.kt index 2008cc6d014..8f79fb74573 100644 --- a/kotlin-power-assert-gradle/src/main/kotlin/com/bnorm/power/PowerAssertGradlePlugin.kt +++ b/kotlin-power-assert-gradle/src/main/kotlin/com/bnorm/power/PowerAssertGradlePlugin.kt @@ -28,7 +28,11 @@ class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin { extensions.create("kotlinPowerAssert", PowerAssertGradleExtension::class.java) } - override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean = true + 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 } + } override fun getCompilerPluginId(): String = "com.bnorm.kotlin-power-assert" diff --git a/sample/build.gradle.kts b/sample/build.gradle.kts index fc7876078da..32eb5f44e3e 100644 --- a/sample/build.gradle.kts +++ b/sample/build.gradle.kts @@ -66,4 +66,10 @@ configure { "com.bnorm.power.assert", "com.bnorm.power.dbg" ) + excludedSourceSets = listOf( + "commonMain", + "jvmMain", + "jsMain", + "nativeMain" + ) } diff --git a/sample/src/commonMain/kotlin/com/bnorm/power/Person.kt b/sample/src/commonMain/kotlin/com/bnorm/power/Person.kt index 48cbe9850b9..c8d09300e16 100644 --- a/sample/src/commonMain/kotlin/com/bnorm/power/Person.kt +++ b/sample/src/commonMain/kotlin/com/bnorm/power/Person.kt @@ -20,6 +20,11 @@ data class Person( val firstName: String, val lastName: String, ) { + init { + require(firstName.isNotBlank()) + require(lastName.isNotBlank()) + } + companion object { val UNKNOWN = listOf(Person("John", "Doe"), Person("Jane", "Doe")) override fun toString() = "Person.Companion" diff --git a/sample/src/commonTest/kotlin/com/bnorm/power/PowerAssertTest.kt b/sample/src/commonTest/kotlin/com/bnorm/power/PowerAssertTest.kt index c0231ff33de..522be08967b 100644 --- a/sample/src/commonTest/kotlin/com/bnorm/power/PowerAssertTest.kt +++ b/sample/src/commonTest/kotlin/com/bnorm/power/PowerAssertTest.kt @@ -63,6 +63,15 @@ class PowerAssertTest { ) } + @Test + fun excludedRequire() { + val error = assertFailsWith { Person("", "") } + assertEquals( + actual = error.message, + expected = "Failed requirement." + ) + } + @Test fun softAssert() { val unknown: List? = Person.UNKNOWN