[Gradle] Implement MppCompositeBuildIT based on martinbonnin's commit
^KT-52172 Verification Pending
This commit is contained in:
committed by
Space Team
parent
abd58445c9
commit
fb6a2f5bb4
+55
-4
@@ -6,13 +6,11 @@
|
||||
package org.jetbrains.kotlin.gradle.mpp
|
||||
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.KOTLIN_VERSION
|
||||
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.kotilnNativeDistributionDependencies
|
||||
import org.jetbrains.kotlin.gradle.util.kotlinStdlibDependencies
|
||||
import org.jetbrains.kotlin.gradle.util.replaceText
|
||||
import org.jetbrains.kotlin.gradle.util.resolveIdeDependencies
|
||||
import org.jetbrains.kotlin.gradle.util.*
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import kotlin.io.path.absolutePathString
|
||||
|
||||
@@ -80,4 +78,57 @@ class MppCompositeBuildIT : KGPBaseTest() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@GradleTest
|
||||
fun `test - sample1 - ide dependencies`(gradleVersion: GradleVersion) {
|
||||
project("mpp-composite-build/sample1", gradleVersion) {
|
||||
projectPath.resolve("included-build").addDefaultBuildFiles()
|
||||
buildGradleKts.replaceText("<kgp_version>", KOTLIN_VERSION)
|
||||
projectPath.resolve("included-build/build.gradle.kts").replaceText("<kgp_version>", KOTLIN_VERSION)
|
||||
|
||||
resolveIdeDependencies(":") { dependencies ->
|
||||
dependencies["commonMain"].assertMatches(
|
||||
kotlinStdlibDependencies,
|
||||
regularSourceDependency("included-build::included/commonMain")
|
||||
)
|
||||
|
||||
dependencies["jvmMain"].assertMatches(
|
||||
kotlinStdlibDependencies,
|
||||
jetbrainsAnnotationDependencies,
|
||||
|
||||
dependsOnDependency(":/commonMain"),
|
||||
projectArtifactDependency(
|
||||
Regular, "included-build::included",
|
||||
FilePathRegex(".*/included-build/included/build/libs/included-jvm.jar")
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@GradleTest
|
||||
fun `test - sample1 - assemble and execute`(gradleVersion: GradleVersion) {
|
||||
project("mpp-composite-build/sample1", gradleVersion) {
|
||||
projectPath.resolve("included-build").addDefaultBuildFiles()
|
||||
buildGradleKts.replaceText("<kgp_version>", KOTLIN_VERSION)
|
||||
projectPath.resolve("included-build/build.gradle.kts").replaceText("<kgp_version>", KOTLIN_VERSION)
|
||||
|
||||
build("assemble") {
|
||||
assertTasksExecuted(":compileCommonMainKotlinMetadata")
|
||||
assertTasksExecuted(":compileKotlinJvm")
|
||||
assertTasksExecuted(":compileKotlinJs")
|
||||
}
|
||||
|
||||
build("assemble") {
|
||||
assertTasksUpToDate(":compileCommonMainKotlinMetadata")
|
||||
assertTasksUpToDate(":compileKotlinJvm")
|
||||
assertTasksUpToDate(":compileKotlinJs")
|
||||
}
|
||||
|
||||
build("check") {
|
||||
assertTasksExecuted(":jvmTest")
|
||||
assertTasksExecuted(":jsTest")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -406,7 +406,7 @@ private fun setupProjectFromTestResources(
|
||||
|
||||
private val String.testProjectPath: Path get() = Paths.get("src", "test", "resources", "testProject", this)
|
||||
|
||||
private fun Path.addDefaultBuildFiles() {
|
||||
internal fun Path.addDefaultBuildFiles() {
|
||||
addPluginManagementToSettings()
|
||||
|
||||
val buildSrc = resolve("buildSrc")
|
||||
|
||||
+2
@@ -12,6 +12,8 @@ import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.binaryCoordinates
|
||||
|
||||
val kotlinStdlibDependencies = binaryCoordinates(Regex(".*kotlin-stdlib.*"))
|
||||
|
||||
val jetbrainsAnnotationDependencies = binaryCoordinates(Regex("org\\.jetbrains:annotations:.*"))
|
||||
|
||||
val kotilnNativeDistributionDependencies = IdeaKotlinDependencyMatcher("native distribution") { dependency ->
|
||||
dependency is IdeaKotlinResolvedBinaryDependency && dependency.isNativeDistribution
|
||||
}
|
||||
+7
@@ -7,6 +7,9 @@ package org.jetbrains.kotlin.gradle.util
|
||||
|
||||
import org.jetbrains.kotlin.gradle.testbase.createTempDirDeleteOnExit
|
||||
import java.io.File
|
||||
import java.nio.file.Path
|
||||
import kotlin.io.path.readText
|
||||
import kotlin.io.path.writeText
|
||||
|
||||
fun File.getFileByName(name: String): File =
|
||||
findFileByName(name) ?: throw AssertionError("Could not find file with name '$name' in $this")
|
||||
@@ -98,6 +101,10 @@ private fun normalizeTail(prefixEnd: Int, path: String, separator: Boolean): Str
|
||||
return result.toString()
|
||||
}
|
||||
|
||||
fun Path.replaceText(oldValue: String, newValue: String) {
|
||||
writeText(readText().replace(oldValue, newValue))
|
||||
}
|
||||
|
||||
fun File.replaceText(oldValue: String, newValue: String) {
|
||||
writeText(readText().replace(oldValue, newValue))
|
||||
}
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ internal fun TestProject.resolveIdeDependencies(
|
||||
assertions: BuildResult.(dependencies: IdeaKotlinDependenciesContainer) -> Unit
|
||||
) {
|
||||
build("${subproject.orEmpty()}:resolveIdeDependencies") {
|
||||
val subprojectPathPrefix = subproject?.removePrefix(":")?.replace(":", "/")?.plus("/") ?: ""
|
||||
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")
|
||||
|
||||
|
||||
+7
-1
@@ -1,8 +1,14 @@
|
||||
plugins {
|
||||
id("org.jetbrains.kotlin.multiplatform").version("1.7.21")
|
||||
id("org.jetbrains.kotlin.multiplatform").version("<kgp_version>")
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -1,7 +1,6 @@
|
||||
plugins {
|
||||
id("org.jetbrains.kotlin.multiplatform").version("1.7.21").apply(false)
|
||||
id("org.jetbrains.kotlin.multiplatform").version("<kgp_version>").apply(false)
|
||||
}
|
||||
|
||||
|
||||
group = "included-build"
|
||||
version = "0.0.1"
|
||||
|
||||
+3
@@ -1,7 +1,10 @@
|
||||
@file:Suppress("UnstableApiUsage")
|
||||
|
||||
include("included")
|
||||
|
||||
dependencyResolutionManagement {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user