[Gradle][MPP] Flag for suppressing warning for Android Style folders

^KT-54464 Verification Pending
This commit is contained in:
Andrei.Tyrin
2022-11-21 13:34:26 +01:00
committed by Space Team
parent ace17c71e7
commit dc8ac50ddf
3 changed files with 31 additions and 0 deletions
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.Companion.jsCompi
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_ABI_SNAPSHOT
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_JS_KARMA_BROWSERS
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ANDROID_GRADLE_PLUGIN_COMPATIBILITY_NO_WARN
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_ANDROID_STYLE_NO_WARN
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION_1_NO_WARN
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_CINTEROP_COMMONIZATION
@@ -223,6 +224,9 @@ internal class PropertiesProvider private constructor(private val project: Proje
val ignoreMppAndroidSourceSetLayoutVersion: Boolean
get() = booleanProperty(KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION_1_NO_WARN) ?: false
val ignoreMppAndroidSourceSetLayoutV2AndroidStyleDirs: Boolean
get() = booleanProperty(KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_ANDROID_STYLE_NO_WARN) ?: false
val ignoreDisabledCInteropCommonization: Boolean
get() = booleanProperty("$KOTLIN_MPP_ENABLE_CINTEROP_COMMONIZATION.nowarn") ?: false
@@ -489,6 +493,7 @@ internal class PropertiesProvider private constructor(private val project: Proje
const val KOTLIN_MPP_ANDROID_GRADLE_PLUGIN_COMPATIBILITY_NO_WARN = "kotlin.mpp.androidGradlePluginCompatibility.nowarn"
const val KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION = "kotlin.mpp.androidSourceSetLayoutVersion"
const val KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION_1_NO_WARN = "${KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_VERSION}1.nowarn"
const val KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_ANDROID_STYLE_NO_WARN = "kotlin.mpp.androidSourceSetLayoutV2AndroidStyleDirs.nowarn"
const val KOTLIN_NATIVE_DEPENDENCY_PROPAGATION = "kotlin.native.enableDependencyPropagation"
const val KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION = "kotlin.mpp.enableOptimisticNumberCommonization"
const val KOTLIN_MPP_ENABLE_PLATFORM_INTEGER_COMMONIZATION = "kotlin.mpp.enablePlatformIntegerCommonization"
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.gradle.plugin.sources.android.checker
import com.android.build.gradle.api.AndroidSourceSet
import org.gradle.api.logging.Logging
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
import org.jetbrains.kotlin.gradle.plugin.sources.android.KotlinAndroidSourceSetLayout
import java.io.File
@@ -24,6 +26,7 @@ internal object MultiplatformLayoutV2AndroidStyleSourceDirUsageChecker : KotlinA
kotlinSourceSet: KotlinSourceSet,
androidSourceSet: AndroidSourceSet
) {
if (target.project.kotlinPropertiesProvider.ignoreMppAndroidSourceSetLayoutV2AndroidStyleDirs) return
val androidStyleSourceDir = target.project.file("src/${androidSourceSet.name}/kotlin")
if (androidStyleSourceDir in kotlinSourceSet.kotlin.srcDirs && androidStyleSourceDir.exists()) {
val kotlinStyleSourceDirToUse = target.project.file("src/${kotlinSourceSet.name}/kotlin")
@@ -39,6 +42,9 @@ internal object MultiplatformLayoutV2AndroidStyleSourceDirUsageChecker : KotlinA
get() = """
Usage of 'Android Style' source directory $androidStyleSourceDirInUse is deprecated.
Use $kotlinStyleSourceDirToUse instead.
To suppress this warning: put the following in your gradle.properties:
${PropertyNames.KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_ANDROID_STYLE_NO_WARN}=true
""".trimIndent()
}
}
@@ -12,6 +12,7 @@ import org.gradle.api.Project
import org.gradle.api.internal.project.ProjectInternal
import org.jetbrains.kotlin.gradle.*
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.sources.android.checker.MultiplatformLayoutV2AndroidStyleSourceDirUsageChecker.AndroidStyleSourceDirUsageDiagnostic
import org.jetbrains.kotlin.gradle.plugin.sources.android.checker.MultiplatformLayoutV2MultiplatformLayoutV1StyleSourceDirUsageChecker.V1StyleSourceDirUsageDiagnostic
import org.jetbrains.kotlin.gradle.plugin.sources.android.findAndroidSourceSet
@@ -100,6 +101,25 @@ class MultiplatformAndroidSourceSetLayoutV2DiagnosticsTest {
)
}
@Test
fun `test - nowarn flag - android style source dir usage checker`() {
val project = buildMinimalAndroidMultiplatformProject()
project.propertiesExtension.set(PropertiesProvider.PropertyNames.KOTLIN_MPP_ANDROID_SOURCE_SET_LAYOUT_ANDROID_STYLE_NO_WARN, "true")
val androidStyleMain = project.file("src/main/kotlin")
val androidStyleUnitTest = project.file("src/test/kotlin")
val androidStyleInstrumentedTest = project.file("src/androidTest/kotlin")
androidStyleMain.mkdirs()
androidStyleUnitTest.mkdirs()
androidStyleInstrumentedTest.mkdirs()
project.evaluate()
project.checkCreatedSourceSets()
val warnings = diagnosticsReporter.warnings
if (warnings.isNotEmpty()) fail("Expected no warnings emitted. Found $warnings")
}
@Test
fun `test - v1 style source dir usage checker`() {
val project = buildMinimalAndroidMultiplatformProject()