KT-61126 Change test expectations

Also improve failure diagnostics in test
This commit is contained in:
Ilya Gorbunov
2023-09-20 04:49:38 +02:00
committed by Space Team
parent 785d6858ea
commit 7bdcaff89a
@@ -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.plugin.mpp.MetadataDependencyResolution
import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.util.assertDoesNotThrow import org.jetbrains.kotlin.util.assertDoesNotThrow
import org.jetbrains.kotlin.util.assertThrows
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.fail
class StdlibJsExplicitDependencyResolutionTest { class StdlibJsExplicitDependencyResolutionTest {
@@ -26,10 +26,10 @@ class StdlibJsExplicitDependencyResolutionTest {
configurationsThatMustFail = listOf( configurationsThatMustFail = listOf(
// jvm must not resolve, so that stdlib-js doesn't get onto jvm compile classpath // jvm must not resolve, so that stdlib-js doesn't get onto jvm compile classpath
"jvmCompileClasspath", "jvmCompileClasspath",
) + unresolvableMetadataConfigurations, ),
configurationsThatMustResolve = listOf( configurationsThatMustResolve = listOf(
"jsCompileClasspath" "jsCompileClasspath"
), ) + resolvableMetadataConfigurations,
sourceSetWithStdlibJs = "commonMain" sourceSetWithStdlibJs = "commonMain"
) { ) {
jvm() jvm()
@@ -40,11 +40,10 @@ class StdlibJsExplicitDependencyResolutionTest {
@Test @Test
fun `project with jvm and js targets - with stdlib-js dependency in jsMain - resolves js and jvm compile classpaths`() { fun `project with jvm and js targets - with stdlib-js dependency in jsMain - resolves js and jvm compile classpaths`() {
checkKmpProjectResolvesAllMetadataConfigurationsAnd( checkKmpProjectResolvesAllMetadataConfigurationsAnd(
configurationsThatMustFail = unresolvableMetadataConfigurations,
configurationsThatMustResolve = listOf( configurationsThatMustResolve = listOf(
"jsCompileClasspath", "jsCompileClasspath",
"jvmCompileClasspath", "jvmCompileClasspath",
), ) + resolvableMetadataConfigurations,
sourceSetWithStdlibJs = "jsMain", sourceSetWithStdlibJs = "jsMain",
) { ) {
jvm() jvm()
@@ -55,8 +54,7 @@ class StdlibJsExplicitDependencyResolutionTest {
@Test @Test
fun `project js target - with stdlib-js dependency in jsMain - resolves js compile classpath`() { fun `project js target - with stdlib-js dependency in jsMain - resolves js compile classpath`() {
checkKmpProjectResolvesAllMetadataConfigurationsAnd( checkKmpProjectResolvesAllMetadataConfigurationsAnd(
configurationsThatMustFail = unresolvableMetadataConfigurations, configurationsThatMustResolve = listOf("jsCompileClasspath") + resolvableMetadataConfigurations,
configurationsThatMustResolve = listOf("jsCompileClasspath"),
sourceSetWithStdlibJs = "jsMain", sourceSetWithStdlibJs = "jsMain",
) { ) {
js() js()
@@ -66,8 +64,7 @@ class StdlibJsExplicitDependencyResolutionTest {
@Test @Test
fun `project with js target - with stdlib-js dependency in commonMain - resolves js compile classpath`() { fun `project with js target - with stdlib-js dependency in commonMain - resolves js compile classpath`() {
checkKmpProjectResolvesAllMetadataConfigurationsAnd( checkKmpProjectResolvesAllMetadataConfigurationsAnd(
configurationsThatMustFail = unresolvableMetadataConfigurations, configurationsThatMustResolve = listOf("jsCompileClasspath") + resolvableMetadataConfigurations,
configurationsThatMustResolve = listOf("jsCompileClasspath"),
sourceSetWithStdlibJs = "commonMain", sourceSetWithStdlibJs = "commonMain",
) { ) {
js() js()
@@ -75,7 +72,7 @@ class StdlibJsExplicitDependencyResolutionTest {
} }
private fun checkKmpProjectResolvesAllMetadataConfigurationsAnd( private fun checkKmpProjectResolvesAllMetadataConfigurationsAnd(
configurationsThatMustFail: List<String>, configurationsThatMustFail: List<String> = emptyList(),
configurationsThatMustResolve: List<String>, configurationsThatMustResolve: List<String>,
sourceSetWithStdlibJs: String, sourceSetWithStdlibJs: String,
configure: KotlinMultiplatformExtension.() -> Unit, configure: KotlinMultiplatformExtension.() -> Unit,
@@ -104,11 +101,19 @@ class StdlibJsExplicitDependencyResolutionTest {
} }
} }
configurationsThatMustFail.forEach { configurationsThatMustFail.map {
assertThrows<ResolveException> { it to runCatching {
project.configurations.getByName(it).resolve() 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 { configurationsThatMustResolve.forEach {
assertDoesNotThrow { assertDoesNotThrow {
@@ -117,8 +122,8 @@ class StdlibJsExplicitDependencyResolutionTest {
} }
} }
// See KT-61126 for the reason these configurations are unresolvable // These configurations were unresolvable due to KT-61126, but now they are resolvable
private val unresolvableMetadataConfigurations = listOf( private val resolvableMetadataConfigurations = listOf(
"jsMainResolvableDependenciesMetadata", "jsMainResolvableDependenciesMetadata",
"jsTestResolvableDependenciesMetadata", "jsTestResolvableDependenciesMetadata",
"allSourceSetsCompileDependenciesMetadata", "allSourceSetsCompileDependenciesMetadata",