Revert "[MPP] Emit a warning when kotlin-test testing framework couldn't be inferred"

This reverts commit 256d9da24c.

Revert "[MPP] Only add test framework dependency once per configuration"

This reverts commit 65649673a7.

^KT-56828
This commit is contained in:
Timofey Solonin
2023-08-24 13:52:13 +02:00
committed by Space Team
parent 5e63d1a5e5
commit 14bed668d4
6 changed files with 20 additions and 167 deletions
@@ -28,9 +28,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
import org.jetbrains.kotlin.gradle.execution.KotlinAggregateExecutionSource
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
@@ -93,29 +90,28 @@ private fun KotlinTarget.configureKotlinTestDependency(
if (platformType in jvmPlatforms) {
// Checking dependencies which were added via dependsOn(KotlinSourceSet) call
// Compilation has own configurations for these that are different from KotlinSourceSet configurations
val configurationsToAddTestDependencyTo = linkedSetOf<Configuration>()
configurationsToAddTestDependencyTo.addAll(
KotlinDependencyScope.values()
.map { configurations.sourceSetDependencyConfigurationByScope(compilation, it) }
)
configurationsToAddTestDependencyTo.addAll(
compilation.kotlinSourceSets.flatMap { sourceSet ->
KotlinDependencyScope.values().map {
configurations.sourceSetDependencyConfigurationByScope(sourceSet, it)
}
KotlinDependencyScope.values()
.map { configurations.sourceSetDependencyConfigurationByScope(compilation, it) }
.forEach {
it.maybeAddTestDependencyCapability(
compilation,
coreLibrariesVersion,
dependencyHandler,
tasks
)
}
)
configurationsToAddTestDependencyTo.forEach {
it.maybeAddTestDependencyCapability(
compilation,
coreLibrariesVersion,
dependencyHandler,
tasks
)
compilation.kotlinSourceSets.forEach { sourceSet ->
KotlinDependencyScope.values()
.map { configurations.sourceSetDependencyConfigurationByScope(sourceSet, it) }
.forEach {
it.maybeAddTestDependencyCapability(
compilation,
coreLibrariesVersion,
dependencyHandler,
tasks
)
}
}
}
}
@@ -148,10 +144,6 @@ private fun Configuration.maybeAddTestDependencyCapability(
}
}
)
} else {
compilation.project.reportDiagnostic(
KotlinToolingDiagnostics.KotlinTestFrameworkInferenceFailed(name)
)
}
}
}
@@ -529,16 +529,6 @@ object KotlinToolingDiagnostics {
)
}
object KotlinTestFrameworkInferenceFailed : ToolingDiagnosticFactory(WARNING) {
operator fun invoke(configurationName: String) = build(
"""
kotlin-test was added to a non-testing configuration "$configurationName" where test framework couldn't be inferred.
Learn how to configure kotlin-test at: https://kotl.in/kotlin-test-frameworks
""".trimIndent()
)
}
object XCFrameworkDifferentInnerFrameworksName : ToolingDiagnosticFactory(WARNING) {
operator fun invoke(xcFramework: String, innerFrameworks: String) = build(
"Name of XCFramework '$xcFramework' differs from inner frameworks name '$innerFrameworks'! Framework renaming is not supported yet"
@@ -1,116 +0,0 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("FunctionName")
package org.jetbrains.kotlin.gradle.dependencyResolutionTests
import org.gradle.api.NamedDomainObjectProvider
import org.gradle.api.artifacts.Configuration
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.kotlin.dsl.dependencies
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.dependencies
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.extraProperties
import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.gradle.util.assertNoDiagnostics
import kotlin.test.Test
class KotlinTestFrameworkInferenceFailedTest {
@Test
fun `KMP project - when jvmTest depends on kotlin-test - emits no diagnostics`() {
evaluateProjectAndResolveConfigurationsWhen {
kmpProjectWithJvm { sourceSets.jvmTest.dependOnKotlinTest() }
}.assertNoDiagnostics()
}
@Test
fun `KMP project - when commonTest depends on kotlin-test - emits no diagnostics`() {
evaluateProjectAndResolveConfigurationsWhen {
kmpProjectWithJvm { sourceSets.commonTest.dependOnKotlinTest() }
}.assertNoDiagnostics()
}
@Test
fun `KMP project - when jvmMain depends on kotlin-test - emits a diagnostic`() {
evaluateProjectAndResolveConfigurationsWhen {
kmpProjectWithJvm { sourceSets.jvmMain.dependOnKotlinTest() }
}.checkDiagnostics("kotlin-test-kmp-jvmMain")
}
@Test
fun `KMP project - when commonMain depends on kotlin-test - emits a diagnostic`() {
evaluateProjectAndResolveConfigurationsWhen {
kmpProjectWithJvm { sourceSets.commonMain.dependOnKotlinTest() }
}.checkDiagnostics("kotlin-test-kmp-commonMain")
}
@Test
fun `KMP project without jvm - when commonMain depends on kotlin-test - emits no diagnostics`() {
evaluateProjectAndResolveConfigurationsWhen {
buildProjectWithMPP {
kotlin {
linuxArm64()
linuxX64()
sourceSets.commonMain.dependOnKotlinTest()
}
}
}.assertNoDiagnostics()
}
@Test
fun `JVM project - when testImplementation depends on kotlin-test - emits no diagnostics`() {
evaluateProjectAndResolveConfigurationsWhen {
buildProjectWithJvm {
dependencies {
"testImplementation"("org.jetbrains.kotlin:kotlin-test")
}
}
}.assertNoDiagnostics()
}
@Test
fun `JVM project - when implementation depends on kotlin-test - emits a diagnostic`() {
evaluateProjectAndResolveConfigurationsWhen {
buildProjectWithJvm {
dependencies {
"implementation"("org.jetbrains.kotlin:kotlin-test")
}
}
}.checkDiagnostics("kotlin-test-jvm-implementation")
}
private fun kmpProjectWithJvm(configure: KotlinMultiplatformExtension.() -> Unit): ProjectInternal {
return buildProjectWithMPP {
kotlin {
jvm()
linuxArm64()
configure(this)
}
}
}
private fun NamedDomainObjectProvider<KotlinSourceSet>.dependOnKotlinTest() {
dependencies {
implementation(kotlin("test"))
}
}
private fun evaluateProjectAndResolveConfigurationsWhen(
projectFactory: () -> ProjectInternal
): ProjectInternal {
val project = projectFactory()
project.repositories.mavenLocal()
project.repositories.mavenCentralCacheRedirector()
project.evaluate()
project.configurations.filter(Configuration::isCanBeResolved).forEach(Configuration::resolve)
return project
}
}
@@ -1,3 +0,0 @@
[KotlinTestFrameworkInferenceFailed | WARNING] kotlin-test was added to a non-testing configuration "implementation" where test framework couldn't be inferred.
Learn how to configure kotlin-test at: https://kotl.in/kotlin-test-frameworks
@@ -1,3 +0,0 @@
[KotlinTestFrameworkInferenceFailed | WARNING] kotlin-test was added to a non-testing configuration "jvmCompilationImplementation" where test framework couldn't be inferred.
Learn how to configure kotlin-test at: https://kotl.in/kotlin-test-frameworks
@@ -1,7 +0,0 @@
[KotlinTestFrameworkInferenceFailed | WARNING] kotlin-test was added to a non-testing configuration "jvmMainImplementation" where test framework couldn't be inferred.
Learn how to configure kotlin-test at: https://kotl.in/kotlin-test-frameworks
----
[KotlinTestFrameworkInferenceFailed | WARNING] kotlin-test was added to a non-testing configuration "jvmCompilationImplementation" where test framework couldn't be inferred.
Learn how to configure kotlin-test at: https://kotl.in/kotlin-test-frameworks