From 7bdcaff89aa15cc77db5f19693c3225d1eb83b20 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 20 Sep 2023 04:49:38 +0200 Subject: [PATCH] KT-61126 Change test expectations Also improve failure diagnostics in test --- ...tdlibJsExplicitDependencyResolutionTest.kt | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/StdlibJsExplicitDependencyResolutionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/StdlibJsExplicitDependencyResolutionTest.kt index 029884a2fc8..4063e9a28c9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/StdlibJsExplicitDependencyResolutionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/StdlibJsExplicitDependencyResolutionTest.kt @@ -15,8 +15,8 @@ import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.resolveMetadat import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.util.assertDoesNotThrow -import org.jetbrains.kotlin.util.assertThrows import kotlin.test.Test +import kotlin.test.fail class StdlibJsExplicitDependencyResolutionTest { @@ -26,10 +26,10 @@ class StdlibJsExplicitDependencyResolutionTest { configurationsThatMustFail = listOf( // jvm must not resolve, so that stdlib-js doesn't get onto jvm compile classpath "jvmCompileClasspath", - ) + unresolvableMetadataConfigurations, + ), configurationsThatMustResolve = listOf( "jsCompileClasspath" - ), + ) + resolvableMetadataConfigurations, sourceSetWithStdlibJs = "commonMain" ) { jvm() @@ -40,11 +40,10 @@ class StdlibJsExplicitDependencyResolutionTest { @Test fun `project with jvm and js targets - with stdlib-js dependency in jsMain - resolves js and jvm compile classpaths`() { checkKmpProjectResolvesAllMetadataConfigurationsAnd( - configurationsThatMustFail = unresolvableMetadataConfigurations, configurationsThatMustResolve = listOf( "jsCompileClasspath", "jvmCompileClasspath", - ), + ) + resolvableMetadataConfigurations, sourceSetWithStdlibJs = "jsMain", ) { jvm() @@ -55,8 +54,7 @@ class StdlibJsExplicitDependencyResolutionTest { @Test fun `project js target - with stdlib-js dependency in jsMain - resolves js compile classpath`() { checkKmpProjectResolvesAllMetadataConfigurationsAnd( - configurationsThatMustFail = unresolvableMetadataConfigurations, - configurationsThatMustResolve = listOf("jsCompileClasspath"), + configurationsThatMustResolve = listOf("jsCompileClasspath") + resolvableMetadataConfigurations, sourceSetWithStdlibJs = "jsMain", ) { js() @@ -66,8 +64,7 @@ class StdlibJsExplicitDependencyResolutionTest { @Test fun `project with js target - with stdlib-js dependency in commonMain - resolves js compile classpath`() { checkKmpProjectResolvesAllMetadataConfigurationsAnd( - configurationsThatMustFail = unresolvableMetadataConfigurations, - configurationsThatMustResolve = listOf("jsCompileClasspath"), + configurationsThatMustResolve = listOf("jsCompileClasspath") + resolvableMetadataConfigurations, sourceSetWithStdlibJs = "commonMain", ) { js() @@ -75,7 +72,7 @@ class StdlibJsExplicitDependencyResolutionTest { } private fun checkKmpProjectResolvesAllMetadataConfigurationsAnd( - configurationsThatMustFail: List, + configurationsThatMustFail: List = emptyList(), configurationsThatMustResolve: List, sourceSetWithStdlibJs: String, configure: KotlinMultiplatformExtension.() -> Unit, @@ -104,11 +101,19 @@ class StdlibJsExplicitDependencyResolutionTest { } } - configurationsThatMustFail.forEach { - assertThrows { + configurationsThatMustFail.map { + it to runCatching { project.configurations.getByName(it).resolve() - } + }.exceptionOrNull() } + .filterNot { (_, e) -> e is ResolveException } + .takeIf { it.isNotEmpty() } + ?.let { results -> + fail( + "Expected configurations resolve to fail with ResolveException, but was\n" + + results.joinToString("\n") { (name, e) -> " $name: ${e ?: "successful"}" } + ) + } configurationsThatMustResolve.forEach { assertDoesNotThrow { @@ -117,8 +122,8 @@ class StdlibJsExplicitDependencyResolutionTest { } } - // See KT-61126 for the reason these configurations are unresolvable - private val unresolvableMetadataConfigurations = listOf( + // These configurations were unresolvable due to KT-61126, but now they are resolvable + private val resolvableMetadataConfigurations = listOf( "jsMainResolvableDependenciesMetadata", "jsTestResolvableDependenciesMetadata", "allSourceSetsCompileDependenciesMetadata",