From 0a57f25c38bb8970b9008d88cfe89ea598a59c0d Mon Sep 17 00:00:00 2001 From: Filipp Zhinkin Date: Mon, 7 Jul 2025 16:55:32 -0400 Subject: [PATCH] Correctly filter targets for ABI check Fixes #304 --- .../validation/test/KlibVerificationTests.kt | 26 +++++++++++++++++-- .../BinaryCompatibilityValidatorPlugin.kt | 10 +------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/functionalTest/kotlin/kotlinx/validation/test/KlibVerificationTests.kt b/src/functionalTest/kotlin/kotlinx/validation/test/KlibVerificationTests.kt index 64d1df7..a24fd8c 100644 --- a/src/functionalTest/kotlin/kotlinx/validation/test/KlibVerificationTests.kt +++ b/src/functionalTest/kotlin/kotlinx/validation/test/KlibVerificationTests.kt @@ -852,7 +852,7 @@ internal class KlibVerificationTests : BaseKotlinGradleTest() { } @Test - fun `check cross compilation support`() { + fun `check cross compilation support for apiDump`() { Assume.assumeFalse(HostManager().isEnabled(KonanTarget.MACOS_ARM64)) val runner = test { @@ -868,7 +868,29 @@ internal class KlibVerificationTests : BaseKotlinGradleTest() { arguments.addAll(listOf(":apiDump", "-Pkotlin.native.enableKlibsCrossCompilation=true")) } } - checkKlibDump(runner.build(), "/examples/classes/TopLevelDeclarations.klib.all.dump") } + + @Test + fun `check cross compilation support for apiCheck`() { + Assume.assumeFalse(HostManager().isEnabled(KonanTarget.MACOS_ARM64)) + + val runner = test { + settingsGradleKts { + resolve("/examples/gradle/settings/settings-name-testproject.gradle.kts") + } + buildGradleKts { + resolve("/examples/gradle/base/withNativePluginAndCrossCompilation.gradle.kts") + } + additionalBuildConfig("/examples/gradle/configuration/appleTargets/targets.gradle.kts") + addToSrcSet("/examples/classes/TopLevelDeclarations.kt") + abiFile(projectName = "testproject") { + resolve("/examples/classes/TopLevelDeclarations.klib.all.dump") + } + runner { + arguments.addAll(listOf(":apiCheck", "-Pkotlin.native.enableKlibsCrossCompilation=true")) + } + } + assertApiCheckPassed(runner.build()) + } } diff --git a/src/main/kotlin/BinaryCompatibilityValidatorPlugin.kt b/src/main/kotlin/BinaryCompatibilityValidatorPlugin.kt index c117b3e..fc8a4c8 100644 --- a/src/main/kotlin/BinaryCompatibilityValidatorPlugin.kt +++ b/src/main/kotlin/BinaryCompatibilityValidatorPlugin.kt @@ -556,18 +556,10 @@ private class KlibValidationPipelineBuilder( // Compilable targets not supported by the host compiler private fun Project.unsupportedTargets(): Provider> { - val banned = bannedTargets() // for testing only return project.provider { - val hm = HostManager() project.kotlinMultiplatform.targets.matching { it.emitsKlib } .asSequence() - .filter { - if (it is KotlinNativeTarget) { - !hm.isEnabled(it.konanTarget) || it.targetName in banned - } else { - false - } - } + .filterNot { targetIsSupported(it) } .map { it.toKlibTarget() } .toSet() }