[Gradle] Implement MppCompositeBuildIT to check shape of project coordinates across different versions of Gradle

^KT-58157 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-07-28 10:41:06 +02:00
committed by Space Team
parent 749f13ca09
commit d7d6d7ebca
@@ -8,12 +8,15 @@ package org.jetbrains.kotlin.gradle.mpp
import org.gradle.api.logging.configuration.WarningMode
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.KOTLIN_VERSION
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinSourceDependency
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinSourceDependency.Type.Regular
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
import kotlin.test.assertEquals
import kotlin.test.assertIs
@MppGradlePluginTests
@DisplayName("Tests for multiplatform with composite builds")
@@ -114,6 +117,31 @@ class MppCompositeBuildIT : KGPBaseTest() {
}
}
/**
* Test that verifies that after moving to 'buildPath' and 'buildName' in project coordinates (1.9.20),
* the shape of the resolved coordinate are the same across different versions of Gradle.
*/
@GradleTest
fun `test - sample0 - buildId buildPath buildName`(gradleVersion: GradleVersion) {
val producer = project("mpp-composite-build/sample0/producerBuild", gradleVersion)
project("mpp-composite-build/sample0/consumerBuild", gradleVersion) {
settingsGradleKts.toFile().replaceText("<producer_path>", producer.projectPath.toUri().path)
resolveIdeDependencies(":consumerA") { dependencies ->
/* Pick some known dependency and run check on it */
val dependency = dependencies["commonMain"].getOrFail(regularSourceDependency(":producerBuild::producerA/commonMain"))
assertIs<IdeaKotlinSourceDependency>(dependency)
val projectCoordinates = dependency.coordinates.project
@Suppress("DEPRECATION")
assertEquals("producerBuild", projectCoordinates.buildId)
assertEquals("producerBuild", projectCoordinates.buildName)
assertEquals(":producerBuild", projectCoordinates.buildPath)
assertEquals(":producerA", projectCoordinates.projectPath)
assertEquals("producerA", projectCoordinates.projectName)
}
}
}
@GradleTest
fun `test - sample1 - ide dependencies`(gradleVersion: GradleVersion) {
project("mpp-composite-build/sample1", gradleVersion) {
@@ -315,7 +343,11 @@ class MppCompositeBuildIT : KGPBaseTest() {
dependsOnDependency(":consumerA/commonMain"),
dependsOnDependency(":consumerA/nativeMain"),
dependsOnDependency(":consumerA/linuxMain"),
projectArtifactDependency(Regular, ":producerBuild::producerA", FilePathRegex(".*/linuxX64/main/klib/producerA.klib")),
projectArtifactDependency(
Regular,
":producerBuild::producerA",
FilePathRegex(".*/linuxX64/main/klib/producerA.klib")
),
kotlinNativeDistributionDependencies,
)
}
@@ -374,7 +406,11 @@ class MppCompositeBuildIT : KGPBaseTest() {
@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0, maxVersion = TestVersions.Gradle.G_8_2)
fun `test sample7`(gradleVersion: GradleVersion) {
val producer = project("mpp-composite-build/sample7-KT-59863-pluginManagement.includeBuild/producerBuild", gradleVersion)
project("mpp-composite-build/sample7-KT-59863-pluginManagement.includeBuild/consumerBuild", gradleVersion, defaultBuildOptions) {
project(
"mpp-composite-build/sample7-KT-59863-pluginManagement.includeBuild/consumerBuild",
gradleVersion,
defaultBuildOptions
) {
settingsGradleKts.toFile().replaceText("<producer_path>", producer.projectPath.toUri().path)
build("projects")
}