BuildKotlinToolingMetadataTask: Strip _Decorated classes from target name

This commit is contained in:
sebastian.sellmair
2021-03-17 11:48:56 +01:00
committed by TeamCityServer
parent 24ce6957a9
commit 0406659ac8
3 changed files with 46 additions and 10 deletions
@@ -20,7 +20,11 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.*
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
import org.jetbrains.kotlin.gradle.tooling.buildKotlinToolingMetadataTask
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.library.KotlinAbiVersion
@@ -81,6 +85,31 @@ class BuildKotlinToolingMetadataTest {
listOf(common, androidJvm, jvm, js, native).map { it.name }.sorted(),
metadata.projectTargets.map { it.platformType }.sorted()
)
assertEquals(
KotlinMetadataTarget::class.java.canonicalName,
metadata.projectTargets.single { it.platformType == common.name }.target
)
assertEquals(
KotlinAndroidTarget::class.java.canonicalName,
metadata.projectTargets.single { it.platformType == androidJvm.name }.target
)
assertEquals(
KotlinJvmTarget::class.java.canonicalName,
metadata.projectTargets.single { it.platformType == jvm.name }.target
)
assertEquals(
KotlinJsTarget::class.java.canonicalName,
metadata.projectTargets.single { it.platformType == js.name }.target
)
assertEquals(
KotlinNativeTargetWithHostTests::class.java.canonicalName,
metadata.projectTargets.single { it.platformType == native.name }.target
)
}
@Test
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.tooling
import com.android.build.gradle.BaseExtension
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.internal.GeneratedSubclass
import org.gradle.api.provider.Property
import org.gradle.api.tasks.*
import org.jetbrains.kotlin.compilerRunner.konanVersion
@@ -16,7 +17,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
@@ -108,12 +108,18 @@ private fun KotlinProjectExtension.buildProjectTargets(): List<KotlinToolingMeta
private fun buildTargetMetadata(target: KotlinTarget): KotlinToolingMetadata.ProjectTargetMetadata {
return KotlinToolingMetadata.ProjectTargetMetadata(
target = target.javaClass.canonicalName,
target = buildTargetString(target),
platformType = target.platformType.name,
extras = buildTargetMetadataExtras(target)
)
}
private fun buildTargetString(target: KotlinTarget): String {
return if (target is GeneratedSubclass) {
return target.publicType().canonicalName
} else target.javaClass.canonicalName
}
private fun buildTargetMetadataExtras(target: KotlinTarget): KotlinToolingMetadata.ProjectTargetMetadata.Extras {
return KotlinToolingMetadata.ProjectTargetMetadata.Extras(
jvm = buildJvmExtrasOrNull(target),
@@ -156,3 +162,4 @@ private fun buildNativeExtrasOrNull(target: KotlinTarget): KotlinToolingMetadata
konanAbiVersion = KotlinAbiVersion.CURRENT.toString()
)
}
@@ -45,7 +45,7 @@ class DeserializeStringTest {
}
},
{
"target": "org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget_Decorated",
"target": "org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget",
"platformType": "js",
"extras": {
"js": {
@@ -55,7 +55,7 @@ class DeserializeStringTest {
}
},
{
"target": "org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget_Decorated",
"target": "org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget",
"platformType": "jvm",
"extras": {
"jvm": {
@@ -65,7 +65,7 @@ class DeserializeStringTest {
}
},
{
"target": "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests_Decorated",
"target": "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests",
"platformType": "native",
"extras": {
"native": {
@@ -76,7 +76,7 @@ class DeserializeStringTest {
}
},
{
"target": "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget_Decorated",
"target": "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget",
"platformType": "common"
}
]
@@ -102,7 +102,7 @@ class DeserializeStringTest {
assertNull(androidJvmTarget.extras.native)
val jsTarget = metadata.projectTargets.single { it.platformType == "js" }
assertEquals("org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget_Decorated", jsTarget.target)
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)
@@ -110,7 +110,7 @@ class DeserializeStringTest {
assertNull(jsTarget.extras.native)
val jvmTarget = metadata.projectTargets.single { it.platformType == "jvm" }
assertEquals("org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget_Decorated", jvmTarget.target)
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)
@@ -118,7 +118,7 @@ class DeserializeStringTest {
assertNull(jvmTarget.extras.native)
val nativeTarget = metadata.projectTargets.single { it.platformType == "native" }
assertEquals("org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests_Decorated", nativeTarget.target)
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)
@@ -128,7 +128,7 @@ class DeserializeStringTest {
assertNull(nativeTarget.extras.js)
val commonTarget = metadata.projectTargets.single { it.platformType == "common" }
assertEquals("org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget_Decorated", commonTarget.target)
assertEquals("org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget", commonTarget.target)
assertNull(commonTarget.extras.android)
assertNull(commonTarget.extras.jvm)
assertNull(commonTarget.extras.js)