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 898f154e57f..8aa98cf7cfc 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 @@ -318,7 +318,7 @@ class MppCompositeBuildIT : KGPBaseTest() { } @GradleAndroidTest - fun `test - sample6-KT-56712-umbrella-composite - compileCommonMainKotlinMetadata`( + fun `test - sample6-KT-56712-umbrella-composite`( gradleVersion: GradleVersion, agpVersion: String, jdkVersion: JdkVersions.ProvidedJdk, ) { val producer = project("mpp-composite-build/sample6-KT-56712-umbrella-composite/producer", gradleVersion) @@ -340,6 +340,26 @@ class MppCompositeBuildIT : KGPBaseTest() { build(":consumerB:compileCommonMainKotlinMetadata") { assertTasksExecuted(":consumerB:compileCommonMainKotlinMetadata") } + + build(":consumerA:resolveIdeDependencies") { + consumerA.readIdeDependencies()["commonMain"].assertMatches( + regularSourceDependency("producer::/commonMain"), + kotlinStdlibDependencies + ) + } + + build(":consumerB:resolveIdeDependencies") { + consumerB.readIdeDependencies()["commonMain"].assertMatches( + regularSourceDependency("producer::/commonMain"), + kotlinStdlibDependencies + ) + } + + build(":producer:resolveIdeDependencies") { + producer.readIdeDependencies()["commonMain"].assertMatches( + kotlinStdlibDependencies + ) + } } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/resolveIdeDependencies.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/resolveIdeDependencies.kt index ffb4b143f57..7e7eb5e222b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/resolveIdeDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/resolveIdeDependencies.kt @@ -24,22 +24,27 @@ internal fun TestProject.resolveIdeDependencies( assertions: BuildResult.(dependencies: IdeaKotlinDependenciesContainer) -> Unit ) { build("${subproject.orEmpty()}:resolveIdeDependencies") { - val subprojectPathPrefix = subproject?.removePrefix(":")?.takeIf { it.isNotEmpty() }?.replace(":", "/")?.plus("/") ?: "" - val output = projectPath.resolve("${subprojectPathPrefix}build/ide/dependencies/proto").toFile() - if (!output.isDirectory) fail("Missing output directory: $output") + assertions(readIdeDependencies(subproject)) + } +} - val dependenciesBySourceSetName = output.listFiles().orEmpty().associate { sourceSetDirectory -> - if (!sourceSetDirectory.isDirectory) fail("Expected $sourceSetDirectory to be directory") - val serializedDependencyFiles = sourceSetDirectory.listFiles().orEmpty() - val deserializedDependencies = serializedDependencyFiles.map { dependencyFile -> - deserializeIdeaKotlinDependencyOrFail(dependencyFile) - } +internal fun TestProject.readIdeDependencies(subproject: String? = null): IdeaKotlinDependenciesContainer { + val subprojectPathPrefix = subproject?.removePrefix(":")?.takeIf { it.isNotEmpty() }?.replace(":", "/")?.plus("/") ?: "" + val output = projectPath.resolve("${subprojectPathPrefix}build/ide/dependencies/proto").toFile() + if (!output.isDirectory) fail("Missing output directory: $output") - sourceSetDirectory.name to deserializedDependencies.toSet() + val dependenciesBySourceSetName = output.listFiles().orEmpty().associate { sourceSetDirectory -> + if (!sourceSetDirectory.isDirectory) fail("Expected $sourceSetDirectory to be directory") + val serializedDependencyFiles = sourceSetDirectory.listFiles().orEmpty() + val deserializedDependencies = serializedDependencyFiles.map { dependencyFile -> + deserializeIdeaKotlinDependencyOrFail(dependencyFile) } - assertions(IdeaKotlinDependenciesContainer(dependenciesBySourceSetName)) + sourceSetDirectory.name to deserializedDependencies.toSet() } + + + return IdeaKotlinDependenciesContainer(dependenciesBySourceSetName) } private fun deserializeIdeaKotlinDependencyOrFail(file: File): IdeaKotlinDependency { @@ -57,7 +62,7 @@ private object GradleIntegrationTestIdeaKotlinSerializationContext : IdeaKotlinS } } - class IdeaKotlinDependenciesContainer( +class IdeaKotlinDependenciesContainer( private val dependencies: Map> ) { operator fun get(sourceSetName: String) = dependencies[sourceSetName]