From 9fc7d3693e3eba05b277736440559c9527897bcb Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Tue, 14 Nov 2023 19:52:28 +0100 Subject: [PATCH] [Gradle] Test composite build import with enabled CInterop commonization On non-mac machines. With projects that have enabled MacOS targets. In this scenario we don't want to ruin IDE UX for users that just want to use IDE and work with project parts that is not related to apple ^KT-63197 --- .../kotlin/gradle/mpp/MppCompositeBuildIT.kt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt index ad906d04779..122de3349cb 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinSourceDependency.Type.Regu import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.* import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.util.* +import org.jetbrains.kotlin.konan.target.HostManager import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.condition.OS import kotlin.test.assertEquals @@ -242,6 +243,41 @@ class MppCompositeBuildIT : KGPBaseTest() { } } + @GradleTest + fun `test - sample2-withHostSpecificTargets - import cinterop dependencies`(gradleVersion: GradleVersion) { + val producer = project("mpp-composite-build/sample2-withHostSpecificTargets/producerBuild", gradleVersion) { + if (HostManager.hostIsMac) { + subProject("producerA").buildGradleKts.append( + """ + tasks.configureEach { + if (name == "iosArm64MetadataJar" || name == "iosX64MetadataJar") { + enabled = false + } + } + """.trimIndent() + ) + } + } + + project("mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild", gradleVersion) { + settingsGradleKts.toFile().replaceText("", producer.projectPath.toUri().path) + gradleProperties.append("kotlin.mpp.enableCInteropCommonization=true") + + build("cleanNativeDistributionCommonization") + build(":consumerA:transformNativeMainCInteropDependenciesMetadataForIde") { + if (HostManager.hostIsMac) { + assertTasksSkipped(":producerBuild:producerA:iosArm64MetadataJar") + assertTasksSkipped(":producerBuild:producerA:iosX64MetadataJar") + } else { + assertTasksNotExecuted(":producerBuild:producerA:iosArm64MetadataJar") + assertTasksNotExecuted(":producerBuild:producerA:iosX64MetadataJar") + } + assertTasksExecuted(":consumerA:transformNativeMainCInteropDependenciesMetadataForIde") + + } + } + } + @GradleTest fun `test - sample3-KT-56198-singleTargetMpp-includingJvm - ide dependencies`(gradleVersion: GradleVersion) { val producer = project("mpp-composite-build/sample3-KT-56198-singleTargetMpp-includingJvm/producerBuild", gradleVersion)