[Gradle, native] Allow disabling warning about incorrect dependencies

Issue #KT-32476
This commit is contained in:
Ilya Matveev
2020-05-21 18:29:55 +07:00
parent c9adf22697
commit eaa16714f6
3 changed files with 36 additions and 3 deletions
@@ -56,5 +56,25 @@ class GeneralNativeIT : BaseGradleIT() {
}
}
@Test
fun testIncorrectDependenciesWarning() = with(Project("sample-lib", directoryPrefix = "new-mpp-lib-and-app")) {
setupWorkingDir()
gradleBuildScript().modify {
it.replace(
"api 'org.jetbrains.kotlin:kotlin-stdlib-common'",
"compileOnly 'org.jetbrains.kotlin:kotlin-stdlib-common'"
)
}
build {
assertSuccessful()
assertContains("A compileOnly dependency is used in the Kotlin/Native target")
}
build("-Pkotlin.native.ignoreIncorrectDependencies=true") {
assertSuccessful()
assertNotContains("A compileOnly dependency is used in the Kotlin/Native target")
}
}
// TODO: Move native specific tests from NewMultiplatformIT here.
}
@@ -95,6 +95,9 @@ internal class PropertiesProvider private constructor(private val project: Proje
val ignoreDisabledNativeTargets: Boolean?
get() = booleanProperty(DisabledNativeTargetsReporter.DISABLE_WARNING_PROPERTY_NAME)
val ignoreIncorrectNativeDependencies: Boolean?
get() = booleanProperty(KOTLIN_NATIVE_IGNORE_INCORRECT_DEPENDENCIES)
/**
* Enables parallel tasks execution within a project with Workers API.
* Does not enable using actual worker proccesses
@@ -227,6 +230,7 @@ internal class PropertiesProvider private constructor(private val project: Proje
private const val CACHED_PROVIDER_EXT_NAME = "kotlin.properties.provider"
internal const val KOTLIN_NATIVE_DISABLE_COMPILER_DAEMON = "kotlin.native.disableCompilerDaemon"
internal const val KOTLIN_NATIVE_IGNORE_INCORRECT_DEPENDENCIES = "kotlin.native.ignoreIncorrectDependencies"
// TODO: Remove once KT-37550 is fixed
internal const val KOTLIN_NATIVE_ENABLE_PARALLEL_EXECUTION_CHECK = "kotlin.native.enableParallelExecutionCheck"
@@ -21,6 +21,7 @@ import org.gradle.api.tasks.TaskProvider
import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.TEST_COMPILATION_NAME
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.KOTLIN_NATIVE_IGNORE_INCORRECT_DEPENDENCIES
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.targets.native.*
import org.jetbrains.kotlin.gradle.targets.native.tasks.KotlinNativeHostTest
@@ -225,7 +226,10 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget>(
configureBinaries(target)
configureFrameworkExport(target)
configureCInterops(target)
warnAboutIncorrectDependencies(target)
if (PropertiesProvider(target.project).ignoreIncorrectNativeDependencies != true) {
warnAboutIncorrectDependencies(target)
}
}
override fun configureArchivesAndComponent(target: T): Unit = with(target.project) {
@@ -353,10 +357,15 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget>(
Dependencies:
${it.second.joinToString(separator = "\n") { it.stringCoordinates() }}
""".trimIndent()
""".trimIndent()
)
}
warn("Such dependencies are not applicable for Kotlin/Native, consider changing the dependency type to 'implementation' or 'api'.")
warn(
"""
Such dependencies are not applicable for Kotlin/Native, consider changing the dependency type to 'implementation' or 'api'.
To disable this warning, set the $KOTLIN_NATIVE_IGNORE_INCORRECT_DEPENDENCIES=true project property
""".trimIndent()
)
}
}
}