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 437e96af9a4..dfbc101ef52 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 @@ -253,4 +253,67 @@ class MppCompositeBuildIT : KGPBaseTest() { } } } + + @GradleTest + fun `test - sample5-KT-56536-rootProject_name - assemble`(gradleVersion: GradleVersion) { + val producer = project("mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild", gradleVersion) + + project("mpp-composite-build/sample5-KT-56536-rootProject.name/consumerBuild", gradleVersion) { + settingsGradleKts.toFile().replaceText("", producer.projectPath.toUri().path) + build("cleanNativeDistributionCommonization") + + build("assemble") { + assertTasksExecuted(":consumerA:compileCommonMainKotlinMetadata") + assertTasksExecuted(":consumerA:compileNativeMainKotlinMetadata") + assertTasksExecuted(":consumerA:compileNativeMainKotlinMetadata") + assertTasksExecuted(":consumerA:compileKotlinLinuxX64") + assertTasksExecuted(":consumerA:compileKotlinJvm") + } + + build("assemble") { + assertTasksUpToDate(":consumerA:compileCommonMainKotlinMetadata") + assertTasksUpToDate(":consumerA:compileNativeMainKotlinMetadata") + assertTasksUpToDate(":consumerA:compileNativeMainKotlinMetadata") + assertTasksUpToDate(":consumerA:compileKotlinLinuxX64") + assertTasksUpToDate(":consumerA:compileKotlinJvm") + } + } + } + + @GradleTest + fun `test - sample5-KT-56536-rootProject_name - ide dependencies`(gradleVersion: GradleVersion) { + val producer = project("mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild", gradleVersion) + + project("mpp-composite-build/sample5-KT-56536-rootProject.name/consumerBuild", gradleVersion) { + settingsGradleKts.toFile().replaceText("", producer.projectPath.toUri().path) + resolveIdeDependencies(":consumerA") { dependencies -> + dependencies["commonMain"].assertMatches( + regularSourceDependency("producerBuild::producerA/commonMain"), + kotlinStdlibDependencies + ) + + dependencies["nativeMain"].assertMatches( + dependsOnDependency(":consumerA/commonMain"), + regularSourceDependency("producerBuild::producerA/commonMain"), + regularSourceDependency("producerBuild::producerA/nativeMain"), + regularSourceDependency("producerBuild::producerA/linuxMain"), + kotlinNativeDistributionDependencies, + binaryCoordinates(Regex(".*stdlib-common:.*")) /* KT-56278 */ + ) + + dependencies["linuxMain"].assertMatches( + dependencies["nativeMain"], + dependsOnDependency(":consumerA/nativeMain"), + ) + + dependencies["linuxX64Main"].assertMatches( + dependsOnDependency(":consumerA/commonMain"), + dependsOnDependency(":consumerA/nativeMain"), + dependsOnDependency(":consumerA/linuxMain"), + projectArtifactDependency(Regular, "producerBuild::producerA", FilePathRegex(".*/linuxX64/main/klib/producerA.klib")), + kotlinNativeDistributionDependencies, + ) + } + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/consumerBuild/consumerA/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/consumerBuild/consumerA/build.gradle.kts new file mode 100644 index 00000000000..e8e463cd3bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/consumerBuild/consumerA/build.gradle.kts @@ -0,0 +1,16 @@ +@file:Suppress("OPT_IN_USAGE") + +plugins { + kotlin("multiplatform") +} + +kotlin { + targetHierarchy.default() + jvm() + linuxX64() + linuxArm64() + + 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/sample5-KT-56536-rootProject.name/consumerBuild/consumerA/src/commonMain/kotlin/ConsumerACommon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/consumerBuild/consumerA/src/linuxX64Main/kotlin/ConsumerALinuxX64.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/consumerBuild/consumerA/src/linuxX64Main/kotlin/ConsumerALinuxX64.kt new file mode 100644 index 00000000000..7fac304d38f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/consumerBuild/consumerA/src/linuxX64Main/kotlin/ConsumerALinuxX64.kt @@ -0,0 +1,7 @@ +object ConsumerALinuxX64 { + init { + ProducerACommon + ProducerANative + ProducerALinuxX64 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/consumerBuild/consumerA/src/nativeMain/kotlin/ConsumerANative.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/consumerBuild/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/producerBuild/producerA/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild/producerA/build.gradle.kts new file mode 100644 index 00000000000..88f6b254a60 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/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() + linuxX64() + linuxArm64() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild/producerA/src/commonMain/kotlin/ProducerACommon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/producerBuild/producerA/src/linuxX64Main/kotlin/ProducerALinuxX64.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild/producerA/src/linuxX64Main/kotlin/ProducerALinuxX64.kt new file mode 100644 index 00000000000..921704bb926 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild/producerA/src/linuxX64Main/kotlin/ProducerALinuxX64.kt @@ -0,0 +1 @@ +object ProducerALinuxX64 \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild/producerA/src/nativeMain/kotlin/ProducerANative.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/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/sample5-KT-56536-rootProject.name/producerBuild/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild/settings.gradle.kts new file mode 100644 index 00000000000..ed0f8ed90c4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-composite-build/sample5-KT-56536-rootProject.name/producerBuild/settings.gradle.kts @@ -0,0 +1,10 @@ +rootProject.name = "customProducerName" + +dependencyResolutionManagement { + repositories { + mavenLocal() + mavenCentral() + } +} + +include(":producerA")