[Gradle, MPP] Implement kotlin.mpp.absentAndroidTarget.nowarn flag
^KT-41641 Verification Pending
This commit is contained in:
committed by
Space
parent
c56c503426
commit
7d56ef1925
+33
@@ -53,4 +53,37 @@ class KT41641AbsentAndroidTarget : MultiplatformExtensionTest() {
|
||||
fail("Expected no warning message to be logged. Received: $it")
|
||||
})
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test kotlin-mpp-absentAndroidTarget-nowarn flag`() {
|
||||
project.propertiesExtension["kotlin.mpp.absentAndroidTarget.nowarn"] = "true"
|
||||
project.plugins.apply("kotlin-multiplatform")
|
||||
project.plugins.apply("android-library")
|
||||
|
||||
/* Arbitrary minimal Android setup */
|
||||
val android = project.extensions.getByName("android") as LibraryExtension
|
||||
android.compileSdkVersion(30)
|
||||
|
||||
kotlin.jvm()
|
||||
|
||||
project.runMissingAndroidTargetProjectConfigurationHealthCheck(warningLogger = {
|
||||
fail("Expected no warning message to be logged. Received $it")
|
||||
})
|
||||
|
||||
// Test when nowarn is set to false
|
||||
run {
|
||||
var warningMessage: String? = null
|
||||
project.propertiesExtension["kotlin.mpp.absentAndroidTarget.nowarn"] = "false"
|
||||
project.runMissingAndroidTargetProjectConfigurationHealthCheck(warningLogger = { warningMessage = it })
|
||||
assertNotNull(warningMessage, "Expected warning message to be logged")
|
||||
}
|
||||
|
||||
// Test when nowarn is set to null
|
||||
run {
|
||||
var warningMessage: String? = null
|
||||
project.propertiesExtension["kotlin.mpp.absentAndroidTarget.nowarn"] = null
|
||||
project.runMissingAndroidTargetProjectConfigurationHealthCheck(warningLogger = { warningMessage = it })
|
||||
assertNotNull(warningMessage, "Expected warning message to be logged")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.android.findAndroidTarget
|
||||
import org.jetbrains.kotlin.gradle.utils.androidPluginIds
|
||||
@@ -33,6 +34,10 @@ internal fun Project.runMissingKotlinTargetsProjectConfigurationHealthCheck() =
|
||||
internal fun Project.runMissingAndroidTargetProjectConfigurationHealthCheck(
|
||||
warningLogger: (warningMessage: String) -> Unit = project.logger::warn
|
||||
) = project.runProjectConfigurationHealthCheck check@{
|
||||
if (project.kotlinPropertiesProvider.ignoreAbsentAndroidMultiplatformTarget) {
|
||||
return@check
|
||||
}
|
||||
|
||||
val androidPluginId = androidPluginIds
|
||||
.firstOrNull { androidPluginId -> plugins.findPlugin(androidPluginId) != null } ?: return@check
|
||||
|
||||
|
||||
+3
@@ -167,6 +167,9 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
||||
val ignoreDisabledNativeTargets: Boolean?
|
||||
get() = booleanProperty(DisabledNativeTargetsReporter.DISABLE_WARNING_PROPERTY_NAME)
|
||||
|
||||
val ignoreAbsentAndroidMultiplatformTarget: Boolean
|
||||
get() = booleanProperty("kotlin.mpp.absentAndroidTarget.nowarn") ?: false
|
||||
|
||||
val ignoreIncorrectNativeDependencies: Boolean?
|
||||
get() = booleanProperty(KOTLIN_NATIVE_IGNORE_INCORRECT_DEPENDENCIES)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user