[Gradle] Migrate KotlinToolingMetadataIT to new test DSL
^KT-65528 In Progress
This commit is contained in:
committed by
Space Team
parent
72d92cd9b2
commit
81fded3c8b
+82
-74
@@ -5,102 +5,110 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle
|
||||
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.testbase.*
|
||||
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
|
||||
import org.jetbrains.kotlin.gradle.util.replaceText
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.tooling.KotlinToolingMetadata
|
||||
import org.jetbrains.kotlin.tooling.parseJsonOrThrow
|
||||
import org.junit.Test
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import kotlin.io.path.appendText
|
||||
import kotlin.io.path.readText
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class KotlinToolingMetadataMppIT : BaseGradleIT() {
|
||||
override val defaultGradleVersion: GradleVersionRequired = GradleVersionRequired.FOR_MPP_SUPPORT
|
||||
|
||||
private val defaultKotlinToolingMetadataJsonPath
|
||||
get() = "build/kotlinToolingMetadata/kotlin-tooling-metadata.json"
|
||||
@MppGradlePluginTests
|
||||
@DisplayName("Multiplatform metadata for tooling")
|
||||
class KotlinToolingMetadataMppIT : KGPBaseTest() {
|
||||
private val TestProject.defaultKotlinToolingMetadataJsonPath
|
||||
get() = projectPath.resolve("build/kotlinToolingMetadata/kotlin-tooling-metadata.json")
|
||||
|
||||
|
||||
private val buildKotlinToolingMetadataTaskName
|
||||
get() = BuildKotlinToolingMetadataTask.defaultTaskName
|
||||
|
||||
@Test
|
||||
fun `new-mpp-published`() = with(transformProjectWithPluginsDsl("new-mpp-published")) {
|
||||
@GradleTest
|
||||
@DisplayName("Check published metadata contains right data")
|
||||
fun checkPublishedMetadata(
|
||||
gradleVersion: GradleVersion
|
||||
) {
|
||||
project("new-mpp-published", gradleVersion) {
|
||||
|
||||
build("publish") {
|
||||
assertSuccessful()
|
||||
assertTasksExecuted(":$buildKotlinToolingMetadataTaskName")
|
||||
/* Check metadata file in build dir */
|
||||
assertFileExists(defaultKotlinToolingMetadataJsonPath)
|
||||
val metadataJson = projectDir.resolve(defaultKotlinToolingMetadataJsonPath).readText()
|
||||
val metadata = KotlinToolingMetadata.parseJsonOrThrow(metadataJson)
|
||||
assertEquals(
|
||||
listOfNotNull(
|
||||
KotlinPlatformType.common.name,
|
||||
KotlinPlatformType.jvm.name,
|
||||
KotlinPlatformType.js.name,
|
||||
KotlinPlatformType.native.name,
|
||||
KotlinPlatformType.wasm.name,
|
||||
).sorted(),
|
||||
metadata.projectTargets.map { it.platformType }.sorted()
|
||||
)
|
||||
build("publish") {
|
||||
assertTasksExecuted(":$buildKotlinToolingMetadataTaskName")
|
||||
/* Check metadata file in build dir */
|
||||
assertFileExists(defaultKotlinToolingMetadataJsonPath)
|
||||
val metadataJson = defaultKotlinToolingMetadataJsonPath.readText()
|
||||
val metadata = KotlinToolingMetadata.parseJsonOrThrow(metadataJson)
|
||||
assertEquals(
|
||||
listOfNotNull(
|
||||
KotlinPlatformType.common.name,
|
||||
KotlinPlatformType.jvm.name,
|
||||
KotlinPlatformType.js.name,
|
||||
KotlinPlatformType.native.name,
|
||||
KotlinPlatformType.wasm.name,
|
||||
).sorted(),
|
||||
metadata.projectTargets.map { it.platformType }.sorted()
|
||||
)
|
||||
|
||||
/* Check metadata file in published repository */
|
||||
val publishedMetadataJson = projectDir.parentFile.resolve(
|
||||
"repo/com/example/bar/my-lib-bar/1.0/my-lib-bar-1.0-kotlin-tooling-metadata.json"
|
||||
).readText()
|
||||
/* Check metadata file in published repository */
|
||||
val publishedMetadataJson = projectPath.parent.resolve(
|
||||
"repo/com/example/bar/my-lib-bar/1.0/my-lib-bar-1.0-kotlin-tooling-metadata.json"
|
||||
).readText()
|
||||
|
||||
assertEquals(
|
||||
metadataJson, publishedMetadataJson,
|
||||
"Expected published kotlin-tooling-metadata.json to contain same content as in buildDir"
|
||||
)
|
||||
}
|
||||
assertEquals(
|
||||
metadataJson, publishedMetadataJson,
|
||||
"Expected published kotlin-tooling-metadata.json to contain same content as in buildDir"
|
||||
)
|
||||
}
|
||||
|
||||
/* Checking UP-TO-DATE behaviour */
|
||||
build("publish") {
|
||||
assertSuccessful()
|
||||
// Nothing changed. Should be up-to-date
|
||||
assertTasksUpToDate(":$buildKotlinToolingMetadataTaskName")
|
||||
}
|
||||
/* Checking UP-TO-DATE behaviour */
|
||||
build("publish") {
|
||||
// Nothing changed. Should be up to date
|
||||
assertTasksUpToDate(":$buildKotlinToolingMetadataTaskName")
|
||||
}
|
||||
|
||||
// Adding macos target
|
||||
val buildFile = projectDir.resolve("build.gradle.kts")
|
||||
buildFile.writeText(
|
||||
buildFile.readText().replace(
|
||||
"linuxX64()", "linuxX64()\nmacosX64()"
|
||||
)
|
||||
)
|
||||
// Adding macos target
|
||||
buildGradleKts.replaceText("linuxX64()", "linuxX64()\nmacosX64()")
|
||||
|
||||
build("publish") {
|
||||
assertSuccessful()
|
||||
assertTasksExecuted(":$buildKotlinToolingMetadataTaskName")
|
||||
val metadata = KotlinToolingMetadata.parseJsonOrThrow(projectDir.resolve(defaultKotlinToolingMetadataJsonPath).readText())
|
||||
assertEquals(
|
||||
listOf(KonanTarget.LINUX_X64.name, KonanTarget.MACOS_X64.name).sorted(),
|
||||
metadata.projectTargets.mapNotNull { it.extras.native?.konanTarget }.sorted()
|
||||
)
|
||||
}
|
||||
build("publish") {
|
||||
assertTasksExecuted(":$buildKotlinToolingMetadataTaskName")
|
||||
val metadata = KotlinToolingMetadata.parseJsonOrThrow(defaultKotlinToolingMetadataJsonPath.readText())
|
||||
assertEquals(
|
||||
listOf(KonanTarget.LINUX_X64.name, KonanTarget.MACOS_X64.name).sorted(),
|
||||
metadata.projectTargets.mapNotNull { it.extras.native?.konanTarget }.sorted()
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `new-mpp-published with KotlinToolingMetadataArtifact disabled`() = with(transformProjectWithPluginsDsl("new-mpp-published")) {
|
||||
projectDir.resolve("gradle.properties").appendText("\nkotlin.mpp.enableKotlinToolingMetadataArtifact=false")
|
||||
build("publish") {
|
||||
assertSuccessful()
|
||||
assertNoSuchFile(defaultKotlinToolingMetadataJsonPath)
|
||||
assertTasksNotRealized(
|
||||
":$buildKotlinToolingMetadataTaskName"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `kotlin-js-browser-project`() = with(transformProjectWithPluginsDsl("kotlin-js-browser-project")) {
|
||||
build(BuildKotlinToolingMetadataTask.defaultTaskName) {
|
||||
assertSuccessful()
|
||||
assertTasksExecuted(":app:$buildKotlinToolingMetadataTaskName")
|
||||
assertTasksExecuted(":base:$buildKotlinToolingMetadataTaskName")
|
||||
assertTasksExecuted(":lib:$buildKotlinToolingMetadataTaskName")
|
||||
@GradleTest
|
||||
@DisplayName("KotlinToolingMetadata should be not published when disabled")
|
||||
fun checkPublishingWithKotlinToolingMetadataArtifactDisabled(
|
||||
gradleVersion: GradleVersion,
|
||||
) {
|
||||
project("new-mpp-published", gradleVersion) {
|
||||
gradleProperties.appendText("\nkotlin.mpp.enableKotlinToolingMetadataArtifact=false")
|
||||
build("publish") {
|
||||
assertFileNotExists(defaultKotlinToolingMetadataJsonPath)
|
||||
assertTasksAreNotInTaskGraph(":$buildKotlinToolingMetadataTaskName")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@GradleTest
|
||||
@DisplayName("KotlinToolingMetadata tasks are avaialbe in Kotlin JS browser project")
|
||||
fun tasksAreAvailableInKotlinJsBrowser(
|
||||
gradleVersion: GradleVersion
|
||||
) {
|
||||
project("kotlin-js-browser-project", gradleVersion) {
|
||||
build(buildKotlinToolingMetadataTaskName) {
|
||||
assertTasksExecuted(":app:$buildKotlinToolingMetadataTaskName")
|
||||
assertTasksExecuted(":base:$buildKotlinToolingMetadataTaskName")
|
||||
assertTasksExecuted(":lib:$buildKotlinToolingMetadataTaskName")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user