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 dfbc101ef52..898f154e57f 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 @@ -316,4 +316,30 @@ class MppCompositeBuildIT : KGPBaseTest() { } } } + + @GradleAndroidTest + fun `test - sample6-KT-56712-umbrella-composite - compileCommonMainKotlinMetadata`( + gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk, + ) { + val producer = project("mpp-composite-build/sample6-KT-56712-umbrella-composite/producer", gradleVersion) + val consumerA = project("mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerA", gradleVersion) + val consumerB = project("mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerB", gradleVersion) + + project( + "mpp-composite-build/sample6-KT-56712-umbrella-composite/composite", gradleVersion, + buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion), buildJdk = jdkVersion.location + ) { + settingsGradleKts.toFile().replaceText("", producer.projectPath.toUri().path) + settingsGradleKts.toFile().replaceText("", consumerA.projectPath.toUri().path) + settingsGradleKts.toFile().replaceText("", consumerB.projectPath.toUri().path) + + build(":consumerA:compileCommonMainKotlinMetadata") { + assertTasksExecuted(":consumerA:compileCommonMainKotlinMetadata") + } + + build(":consumerB:compileCommonMainKotlinMetadata") { + assertTasksExecuted(":consumerB:compileCommonMainKotlinMetadata") + } + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/composite/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/composite/settings.gradle.kts new file mode 100644 index 00000000000..09baa4a64ca --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/composite/settings.gradle.kts @@ -0,0 +1,3 @@ +includeBuild("") +includeBuild("") +includeBuild("") \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerA/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerA/build.gradle.kts new file mode 100644 index 00000000000..27781110ae9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerA/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + kotlin("multiplatform") +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + jvm() + linuxX64() + linuxArm64() + targetHierarchy.default() + + sourceSets.commonMain.get().dependencies { + implementation("org.jetbrains.sample:producer: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/sample6-KT-56712-umbrella-composite/consumerA/src/commonMain/kotlin/ConsumerCommonMain.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerA/src/commonMain/kotlin/ConsumerCommonMain.kt new file mode 100644 index 00000000000..e78e19b4d7c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerA/src/commonMain/kotlin/ConsumerCommonMain.kt @@ -0,0 +1,10 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +object ConsumerCommonMain { + init { + ProducerCommonMain.helloFromProducer() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerB/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerB/build.gradle.kts new file mode 100644 index 00000000000..6d6d39169ca --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerB/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + kotlin("multiplatform") + `maven-publish` +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + jvm() + linuxX64() + linuxArm64() + targetHierarchy.default() + + sourceSets.commonMain.get().dependencies { + implementation("org.jetbrains.sample:producer: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/sample6-KT-56712-umbrella-composite/consumerB/src/commonMain/kotlin/ConsumerCommonMain.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerB/src/commonMain/kotlin/ConsumerCommonMain.kt new file mode 100644 index 00000000000..e78e19b4d7c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/consumerB/src/commonMain/kotlin/ConsumerCommonMain.kt @@ -0,0 +1,10 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +object ConsumerCommonMain { + init { + ProducerCommonMain.helloFromProducer() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/build.gradle.kts new file mode 100644 index 00000000000..04499e8cac0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/build.gradle.kts @@ -0,0 +1,27 @@ +plugins { + kotlin("multiplatform") + + /* Loading a second plugin is necessary to ensure ClassLoader isolation */ + id("com.android.library") + +} + +repositories { + mavenLocal() + mavenCentral() +} + +android { + compileSdk = 33 +} + +kotlin { + android() + jvm() + linuxX64() + linuxArm64() + targetHierarchy.default() +} + +group = "org.jetbrains.sample" +version = "1.0.0-SNAPSHOT" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/settings.gradle.kts new file mode 100644 index 00000000000..ae4fe8f4340 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "producer" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/src/commonMain/kotlin/ProducerCommonMain.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/src/commonMain/kotlin/ProducerCommonMain.kt new file mode 100644 index 00000000000..924db3b69e4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample6-KT-56712-umbrella-composite/producer/src/commonMain/kotlin/ProducerCommonMain.kt @@ -0,0 +1,8 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +object ProducerCommonMain { + fun helloFromProducer() = Unit +} \ No newline at end of file