Build Tooling Metadata 1.1.0: Add isKPMEnabled flag
Build Tooling Metadata now can carry information whether project built with Kotlin Project Model or not. KT-49704
This commit is contained in:
+3
-1
@@ -30,6 +30,7 @@ private fun KotlinToolingMetadata.ProjectSettings.toJsonObject(): JsonObject {
|
|||||||
return JsonObject().apply {
|
return JsonObject().apply {
|
||||||
addProperty("isHmppEnabled", isHmppEnabled)
|
addProperty("isHmppEnabled", isHmppEnabled)
|
||||||
addProperty("isCompatibilityMetadataVariantEnabled", isCompatibilityMetadataVariantEnabled)
|
addProperty("isCompatibilityMetadataVariantEnabled", isCompatibilityMetadataVariantEnabled)
|
||||||
|
addProperty("isKPMEnabled", isKPMEnabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,7 +139,8 @@ private fun JsonObject.toKotlinToolingMetadataOrThrow(): KotlinToolingMetadata {
|
|||||||
private fun JsonObject.toProjectSettingsOrThrow(): KotlinToolingMetadata.ProjectSettings {
|
private fun JsonObject.toProjectSettingsOrThrow(): KotlinToolingMetadata.ProjectSettings {
|
||||||
return KotlinToolingMetadata.ProjectSettings(
|
return KotlinToolingMetadata.ProjectSettings(
|
||||||
isHmppEnabled = getOrThrow("isHmppEnabled").asBoolean,
|
isHmppEnabled = getOrThrow("isHmppEnabled").asBoolean,
|
||||||
isCompatibilityMetadataVariantEnabled = getOrThrow("isCompatibilityMetadataVariantEnabled").asBoolean
|
isCompatibilityMetadataVariantEnabled = getOrThrow("isCompatibilityMetadataVariantEnabled").asBoolean,
|
||||||
|
isKPMEnabled = get("isKPMEnabled")?.asBoolean ?: false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -31,6 +31,7 @@ data class KotlinToolingMetadata(
|
|||||||
data class ProjectSettings(
|
data class ProjectSettings(
|
||||||
val isHmppEnabled: Boolean,
|
val isHmppEnabled: Boolean,
|
||||||
val isCompatibilityMetadataVariantEnabled: Boolean,
|
val isCompatibilityMetadataVariantEnabled: Boolean,
|
||||||
|
val isKPMEnabled: Boolean,
|
||||||
)
|
)
|
||||||
|
|
||||||
data class ProjectTargetMetadata(
|
data class ProjectTargetMetadata(
|
||||||
@@ -68,7 +69,7 @@ data class KotlinToolingMetadata(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val currentSchemaVersion: String = "1.0.0"
|
const val currentSchemaVersion: String = "1.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ class DeserializationFailureTest {
|
|||||||
buildSystemVersion = "",
|
buildSystemVersion = "",
|
||||||
buildPlugin = "",
|
buildPlugin = "",
|
||||||
buildPluginVersion = "",
|
buildPluginVersion = "",
|
||||||
projectSettings = KotlinToolingMetadata.ProjectSettings(false, false),
|
projectSettings = KotlinToolingMetadata.ProjectSettings(false, false, false),
|
||||||
projectTargets = emptyList()
|
projectTargets = emptyList()
|
||||||
).toJsonString()
|
).toJsonString()
|
||||||
|
|
||||||
|
|||||||
+119
@@ -81,6 +81,7 @@ class DeserializeStringTest {
|
|||||||
assertEquals("1.6.255-SNAPSHOT", metadata.buildPluginVersion)
|
assertEquals("1.6.255-SNAPSHOT", metadata.buildPluginVersion)
|
||||||
assertFalse(metadata.projectSettings.isHmppEnabled)
|
assertFalse(metadata.projectSettings.isHmppEnabled)
|
||||||
assertTrue(metadata.projectSettings.isCompatibilityMetadataVariantEnabled)
|
assertTrue(metadata.projectSettings.isCompatibilityMetadataVariantEnabled)
|
||||||
|
assertFalse(metadata.projectSettings.isKPMEnabled)
|
||||||
assertEquals(5, metadata.projectTargets.size, "Expected exactly 4 targets")
|
assertEquals(5, metadata.projectTargets.size, "Expected exactly 4 targets")
|
||||||
|
|
||||||
val androidJvmTarget = metadata.projectTargets.single { it.platformType == "androidJvm" }
|
val androidJvmTarget = metadata.projectTargets.single { it.platformType == "androidJvm" }
|
||||||
@@ -124,4 +125,122 @@ class DeserializeStringTest {
|
|||||||
assertNull(commonTarget.extras.js)
|
assertNull(commonTarget.extras.js)
|
||||||
assertNull(commonTarget.extras.native)
|
assertNull(commonTarget.extras.native)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `schemaVersion 1 1 0`() {
|
||||||
|
@Language("JSON") val json = """
|
||||||
|
{
|
||||||
|
"schemaVersion": "1.1.0",
|
||||||
|
"buildSystem": "Gradle",
|
||||||
|
"buildSystemVersion": "7.1",
|
||||||
|
"buildPlugin": "org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper",
|
||||||
|
"buildPluginVersion": "1.6.255-SNAPSHOT",
|
||||||
|
"projectSettings": {
|
||||||
|
"isHmppEnabled": false,
|
||||||
|
"isCompatibilityMetadataVariantEnabled": true,
|
||||||
|
"isKPMEnabled": true
|
||||||
|
},
|
||||||
|
"projectTargets": [
|
||||||
|
{
|
||||||
|
"target": "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget",
|
||||||
|
"platformType": "androidJvm",
|
||||||
|
"extras": {
|
||||||
|
"android": {
|
||||||
|
"sourceCompatibility": "1.7",
|
||||||
|
"targetCompatibility": "1.7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget",
|
||||||
|
"platformType": "js",
|
||||||
|
"extras": {
|
||||||
|
"js": {
|
||||||
|
"isBrowserConfigured": true,
|
||||||
|
"isNodejsConfigured": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget",
|
||||||
|
"platformType": "jvm",
|
||||||
|
"extras": {
|
||||||
|
"jvm": {
|
||||||
|
"jvmTarget": "1.8",
|
||||||
|
"withJavaEnabled": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests",
|
||||||
|
"platformType": "native",
|
||||||
|
"extras": {
|
||||||
|
"native": {
|
||||||
|
"konanTarget": "linux_x64",
|
||||||
|
"konanVersion": "1.5-dev-17775",
|
||||||
|
"konanAbiVersion": "1.4.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget",
|
||||||
|
"platformType": "common"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
""".trimIndent()
|
||||||
|
|
||||||
|
val metadata = KotlinToolingMetadata.parseJsonOrThrow(json)
|
||||||
|
assertEquals("1.1.0", metadata.schemaVersion)
|
||||||
|
assertEquals("Gradle", metadata.buildSystem)
|
||||||
|
assertEquals("7.1", metadata.buildSystemVersion)
|
||||||
|
assertEquals("org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper", metadata.buildPlugin)
|
||||||
|
assertEquals("1.6.255-SNAPSHOT", metadata.buildPluginVersion)
|
||||||
|
assertFalse(metadata.projectSettings.isHmppEnabled)
|
||||||
|
assertTrue(metadata.projectSettings.isCompatibilityMetadataVariantEnabled)
|
||||||
|
assertTrue(metadata.projectSettings.isKPMEnabled)
|
||||||
|
assertEquals(5, metadata.projectTargets.size, "Expected exactly 4 targets")
|
||||||
|
|
||||||
|
val androidJvmTarget = metadata.projectTargets.single { it.platformType == "androidJvm" }
|
||||||
|
assertEquals("org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget", androidJvmTarget.target)
|
||||||
|
assertEquals("1.7", androidJvmTarget.extras.android?.sourceCompatibility)
|
||||||
|
assertEquals("1.7", androidJvmTarget.extras.android?.targetCompatibility)
|
||||||
|
assertNull(androidJvmTarget.extras.jvm)
|
||||||
|
assertNull(androidJvmTarget.extras.js)
|
||||||
|
assertNull(androidJvmTarget.extras.native)
|
||||||
|
|
||||||
|
val jsTarget = metadata.projectTargets.single { it.platformType == "js" }
|
||||||
|
assertEquals("org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget", jsTarget.target)
|
||||||
|
assertEquals(true, jsTarget.extras.js?.isBrowserConfigured)
|
||||||
|
assertEquals(true, jsTarget.extras.js?.isNodejsConfigured)
|
||||||
|
assertNull(jsTarget.extras.android)
|
||||||
|
assertNull(jsTarget.extras.jvm)
|
||||||
|
assertNull(jsTarget.extras.native)
|
||||||
|
|
||||||
|
val jvmTarget = metadata.projectTargets.single { it.platformType == "jvm" }
|
||||||
|
assertEquals("org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget", jvmTarget.target)
|
||||||
|
assertEquals(false, jvmTarget.extras.jvm?.withJavaEnabled)
|
||||||
|
assertEquals("1.8", jvmTarget.extras.jvm?.jvmTarget)
|
||||||
|
assertNull(jvmTarget.extras.android)
|
||||||
|
assertNull(jvmTarget.extras.js)
|
||||||
|
assertNull(jvmTarget.extras.native)
|
||||||
|
|
||||||
|
val nativeTarget = metadata.projectTargets.single { it.platformType == "native" }
|
||||||
|
assertEquals("org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests", nativeTarget.target)
|
||||||
|
val nativeExtras = assertNotNull(nativeTarget.extras.native)
|
||||||
|
assertEquals("linux_x64", nativeExtras.konanTarget)
|
||||||
|
assertEquals("1.5-dev-17775", nativeExtras.konanVersion)
|
||||||
|
assertEquals("1.4.2", nativeExtras.konanAbiVersion)
|
||||||
|
assertNull(nativeTarget.extras.android)
|
||||||
|
assertNull(nativeTarget.extras.jvm)
|
||||||
|
assertNull(nativeTarget.extras.js)
|
||||||
|
|
||||||
|
val commonTarget = metadata.projectTargets.single { it.platformType == "common" }
|
||||||
|
assertEquals("org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget", commonTarget.target)
|
||||||
|
assertNull(commonTarget.extras.android)
|
||||||
|
assertNull(commonTarget.extras.jvm)
|
||||||
|
assertNull(commonTarget.extras.js)
|
||||||
|
assertNull(commonTarget.extras.native)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -91,7 +91,8 @@ private fun defaultKotlinToolingMetadata(): KotlinToolingMetadata {
|
|||||||
buildPluginVersion = "v1.0 (build plugin)",
|
buildPluginVersion = "v1.0 (build plugin)",
|
||||||
projectSettings = KotlinToolingMetadata.ProjectSettings(
|
projectSettings = KotlinToolingMetadata.ProjectSettings(
|
||||||
isHmppEnabled = false,
|
isHmppEnabled = false,
|
||||||
isCompatibilityMetadataVariantEnabled = true
|
isCompatibilityMetadataVariantEnabled = true,
|
||||||
|
isKPMEnabled = false,
|
||||||
),
|
),
|
||||||
projectTargets = emptyList()
|
projectTargets = emptyList()
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user