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 6404c714ca8..8e1b63c8d57 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 @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.* import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.util.* import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.condition.OS @MppGradlePluginTests @DisplayName("Tests for multiplatform with composite builds") @@ -150,4 +151,31 @@ class MppCompositeBuildIT : KGPBaseTest() { } } } + + @OsCondition(enabledOnCI = [OS.MAC], supportedOn = [OS.MAC]) + @GradleTest + fun `test - sample2-withHostSpecificTargets - assemble`(gradleVersion: GradleVersion) { + val producer = project("mpp-composite-build/sample2-withHostSpecificTargets/producerBuild", gradleVersion) + + project("mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild", gradleVersion) { + settingsGradleKts.toFile().replaceText("", producer.projectPath.toUri().path) + build("cleanNativeDistributionCommonization") + + build("assemble") { + assertTasksExecuted(":consumerA:compileCommonMainKotlinMetadata") + assertTasksExecuted(":consumerA:compileNativeMainKotlinMetadata") + assertTasksExecuted(":consumerA:compileNativeMainKotlinMetadata") + assertTasksExecuted(":consumerA:compileKotlinIosX64") + assertTasksExecuted(":consumerA:compileKotlinJvm") + } + + build("assemble") { + assertTasksUpToDate(":consumerA:compileCommonMainKotlinMetadata") + assertTasksUpToDate(":consumerA:compileNativeMainKotlinMetadata") + assertTasksUpToDate(":consumerA:compileNativeMainKotlinMetadata") + assertTasksUpToDate(":consumerA:compileKotlinIosX64") + assertTasksUpToDate(":consumerA:compileKotlinJvm") + } + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/build.gradle.kts new file mode 100644 index 00000000000..1131ee86405 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/build.gradle.kts @@ -0,0 +1,16 @@ +@file:Suppress("OPT_IN_USAGE") + +plugins { + kotlin("multiplatform") +} + +kotlin { + targetHierarchy.default() + jvm() + iosX64() + iosArm64() + + sourceSets.commonMain.get().dependencies { + implementation("org.jetbrains.sample:producerA:1.0.0-SNAPSHOT") + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/commonMain/kotlin/ConsumerACommon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/commonMain/kotlin/ConsumerACommon.kt new file mode 100644 index 00000000000..a24fbc86602 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/commonMain/kotlin/ConsumerACommon.kt @@ -0,0 +1,5 @@ +object ConsumerACommon { + init { + ProducerACommon + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/iosX64Main/kotlin/ConsumerAIosX64.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/iosX64Main/kotlin/ConsumerAIosX64.kt new file mode 100644 index 00000000000..6a8c81e2546 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/iosX64Main/kotlin/ConsumerAIosX64.kt @@ -0,0 +1,7 @@ +object ConsumerAIosX64 { + init { + ProducerACommon + ProducerANative + ProducerAIosX64 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/nativeMain/kotlin/ConsumerANative.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/nativeMain/kotlin/ConsumerANative.kt new file mode 100644 index 00000000000..3a0f8f1ea5b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/consumerA/src/nativeMain/kotlin/ConsumerANative.kt @@ -0,0 +1,5 @@ +object ConsumerANative { + init { + ProducerANative + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/settings.gradle.kts new file mode 100644 index 00000000000..51772eedeb2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/consumerBuild/settings.gradle.kts @@ -0,0 +1,14 @@ +dependencyResolutionManagement { + repositories { + mavenLocal() + mavenCentral() + } +} + +include(":consumerA") + +includeBuild("") { + dependencySubstitution { + substitute(module("org.jetbrains.sample:producerA")).using(project(":producerA")) + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/build.gradle.kts new file mode 100644 index 00000000000..9fb0bee1ac9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/build.gradle.kts @@ -0,0 +1,17 @@ +@file:Suppress("OPT_IN_USAGE") + +plugins { + kotlin("multiplatform") + `maven-publish` +} + + +group = "org.jetbrains.sample" +version = "1.0.0-SNAPSHOT" + +kotlin { + targetHierarchy.default() + jvm() + iosX64() + iosArm64() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/commonMain/kotlin/ProducerACommon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/commonMain/kotlin/ProducerACommon.kt new file mode 100644 index 00000000000..b072253bfee --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/commonMain/kotlin/ProducerACommon.kt @@ -0,0 +1 @@ +object ProducerACommon \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/iosX64Main/kotlin/ProducerAIosX64.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/iosX64Main/kotlin/ProducerAIosX64.kt new file mode 100644 index 00000000000..9f1457fff38 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/iosX64Main/kotlin/ProducerAIosX64.kt @@ -0,0 +1 @@ +object ProducerAIosX64 \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/nativeMain/kotlin/ProducerANative.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/nativeMain/kotlin/ProducerANative.kt new file mode 100644 index 00000000000..618d78c3f83 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/producerA/src/nativeMain/kotlin/ProducerANative.kt @@ -0,0 +1 @@ +object ProducerANative \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/settings.gradle.kts new file mode 100644 index 00000000000..dd20205742e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample2-withHostSpecificTargets/producerBuild/settings.gradle.kts @@ -0,0 +1,8 @@ +dependencyResolutionManagement { + repositories { + mavenLocal() + mavenCentral() + } +} + +include(":producerA")