[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
|
package org.jetbrains.kotlin.gradle.mpp
|
||||||
|
|
||||||
import org.gradle.util.GradleVersion
|
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.tcs.IdeaKotlinSourceDependency.Type.Regular
|
||||||
import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.*
|
import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.*
|
||||||
import org.jetbrains.kotlin.gradle.testbase.*
|
import org.jetbrains.kotlin.gradle.testbase.*
|
||||||
import org.jetbrains.kotlin.gradle.util.kotilnNativeDistributionDependencies
|
import org.jetbrains.kotlin.gradle.util.*
|
||||||
import org.jetbrains.kotlin.gradle.util.kotlinStdlibDependencies
|
|
||||||
import org.jetbrains.kotlin.gradle.util.replaceText
|
|
||||||
import org.jetbrains.kotlin.gradle.util.resolveIdeDependencies
|
|
||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
import kotlin.io.path.absolutePathString
|
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 val String.testProjectPath: Path get() = Paths.get("src", "test", "resources", "testProject", this)
|
||||||
|
|
||||||
private fun Path.addDefaultBuildFiles() {
|
internal fun Path.addDefaultBuildFiles() {
|
||||||
addPluginManagementToSettings()
|
addPluginManagementToSettings()
|
||||||
|
|
||||||
val buildSrc = resolve("buildSrc")
|
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 kotlinStdlibDependencies = binaryCoordinates(Regex(".*kotlin-stdlib.*"))
|
||||||
|
|
||||||
|
val jetbrainsAnnotationDependencies = binaryCoordinates(Regex("org\\.jetbrains:annotations:.*"))
|
||||||
|
|
||||||
val kotilnNativeDistributionDependencies = IdeaKotlinDependencyMatcher("native distribution") { dependency ->
|
val kotilnNativeDistributionDependencies = IdeaKotlinDependencyMatcher("native distribution") { dependency ->
|
||||||
dependency is IdeaKotlinResolvedBinaryDependency && dependency.isNativeDistribution
|
dependency is IdeaKotlinResolvedBinaryDependency && dependency.isNativeDistribution
|
||||||
}
|
}
|
||||||
+7
@@ -7,6 +7,9 @@ package org.jetbrains.kotlin.gradle.util
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.testbase.createTempDirDeleteOnExit
|
import org.jetbrains.kotlin.gradle.testbase.createTempDirDeleteOnExit
|
||||||
import java.io.File
|
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 =
|
fun File.getFileByName(name: String): File =
|
||||||
findFileByName(name) ?: throw AssertionError("Could not find file with name '$name' in $this")
|
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()
|
return result.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Path.replaceText(oldValue: String, newValue: String) {
|
||||||
|
writeText(readText().replace(oldValue, newValue))
|
||||||
|
}
|
||||||
|
|
||||||
fun File.replaceText(oldValue: String, newValue: String) {
|
fun File.replaceText(oldValue: String, newValue: String) {
|
||||||
writeText(readText().replace(oldValue, newValue))
|
writeText(readText().replace(oldValue, newValue))
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ internal fun TestProject.resolveIdeDependencies(
|
|||||||
assertions: BuildResult.(dependencies: IdeaKotlinDependenciesContainer) -> Unit
|
assertions: BuildResult.(dependencies: IdeaKotlinDependenciesContainer) -> Unit
|
||||||
) {
|
) {
|
||||||
build("${subproject.orEmpty()}:resolveIdeDependencies") {
|
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()
|
val output = projectPath.resolve("${subprojectPathPrefix}build/ide/dependencies/proto").toFile()
|
||||||
if (!output.isDirectory) fail("Missing output directory: $output")
|
if (!output.isDirectory) fail("Missing output directory: $output")
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -1,8 +1,14 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("org.jetbrains.kotlin.multiplatform").version("1.7.21")
|
id("org.jetbrains.kotlin.multiplatform").version("<kgp_version>")
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -1,7 +1,6 @@
|
|||||||
plugins {
|
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"
|
group = "included-build"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
|
|||||||
+3
@@ -1,7 +1,10 @@
|
|||||||
|
@file:Suppress("UnstableApiUsage")
|
||||||
|
|
||||||
include("included")
|
include("included")
|
||||||
|
|
||||||
dependencyResolutionManagement {
|
dependencyResolutionManagement {
|
||||||
repositories {
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user