[Gradle] Implement IdeaKotlinBinaryCoordinates.displayString and identityString
^KT-60053 In Progress
This commit is contained in:
committed by
Space Team
parent
e3f0fa4257
commit
7af254fbf2
@@ -327,7 +327,9 @@ public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordina
|
||||
public static synthetic fun copy$default (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ILjava/lang/Object;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getCapabilities ()Ljava/util/Set;
|
||||
public final fun getDisplayString ()Ljava/lang/String;
|
||||
public final fun getGroup ()Ljava/lang/String;
|
||||
public final fun getIdentityString ()Ljava/lang/String;
|
||||
public final fun getModule ()Ljava/lang/String;
|
||||
public final fun getSourceSetName ()Ljava/lang/String;
|
||||
public final fun getVersion ()Ljava/lang/String;
|
||||
|
||||
+30
-21
@@ -47,13 +47,15 @@ class IdeaKotlinBinaryCoordinates(
|
||||
* This, however, shall not be shown to users, as the String is hard to read
|
||||
* The identityString is not stable across Kotlin versions, hence not intended to be parsed.
|
||||
*/
|
||||
val identityString = buildString {
|
||||
append("$group:$module")
|
||||
if (version != null) append(":$version")
|
||||
if (capabilities.isNotEmpty()) {
|
||||
append(capabilities.joinToString(", ", "(", ")"))
|
||||
val identityString: String
|
||||
get() = buildString {
|
||||
append("$group:$module")
|
||||
if (sourceSetName != null) append(":$sourceSetName")
|
||||
if (version != null) append(":$version")
|
||||
if (capabilities.isNotEmpty()) {
|
||||
append(capabilities.joinToString(", ", "(", ")"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* String intended to be shown to users. E.g. a library within the IDE can use
|
||||
@@ -82,23 +84,30 @@ class IdeaKotlinBinaryCoordinates(
|
||||
* "org.jetbrains:sample-test-fixtures:1.0.0"
|
||||
*
|
||||
*/
|
||||
val displayString = run {
|
||||
val classifyingCapabilities = capabilities.filter { capability -> capability.group == group && capability.name.startsWith(module) }
|
||||
when {
|
||||
classifyingCapabilities.size == 1 -> classifyingCapabilities.single().toString()
|
||||
classifyingCapabilities.size > 1 -> buildString {
|
||||
append(group)
|
||||
append(classifyingCapabilities.joinToString(prefix = "(", postfix = ")", separator = ", ") { capability ->
|
||||
capability.name.removePrefix(group)
|
||||
})
|
||||
}
|
||||
else -> buildString {
|
||||
append("$group:$module")
|
||||
if (version != null) append(":$version")
|
||||
if (sourceSetName != null) append(":$sourceSetName")
|
||||
val displayString: String
|
||||
get() {
|
||||
val classifyingCapabilities =
|
||||
capabilities.filter { capability -> capability.group == group && capability.name.startsWith(module) }
|
||||
return when {
|
||||
classifyingCapabilities.size == 1 -> buildString {
|
||||
append(classifyingCapabilities.single())
|
||||
if (sourceSetName != null) append(":$sourceSetName")
|
||||
}
|
||||
classifyingCapabilities.size > 1 -> buildString {
|
||||
append("$group:$module-")
|
||||
append(classifyingCapabilities.joinToString(prefix = "(", postfix = ")", separator = ", ") { capability ->
|
||||
capability.name.removePrefix(module).removePrefix("-")
|
||||
})
|
||||
if (sourceSetName != null) append(":$sourceSetName")
|
||||
if (version != null) append(":$version")
|
||||
}
|
||||
else -> buildString {
|
||||
append("$group:$module")
|
||||
if (sourceSetName != null) append(":$sourceSetName")
|
||||
if (version != null) append(":$version")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString(): String = displayString
|
||||
|
||||
|
||||
+133
@@ -0,0 +1,133 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.idea.test.tcs
|
||||
|
||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryCapability
|
||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryCoordinates
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class IdeaKotlinBinaryCoordinatesTest {
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 0`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates("myGroup", "myModule", "1.0.0")
|
||||
assertEquals("myGroup:myModule:1.0.0", coordinates.displayString)
|
||||
assertEquals("myGroup:myModule:1.0.0", coordinates.identityString)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 1`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates("myGroup", "myModule", null)
|
||||
assertEquals("myGroup:myModule", coordinates.displayString)
|
||||
assertEquals("myGroup:myModule", coordinates.identityString)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 2`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates(
|
||||
"myGroup", "myModule", "1.0.0",
|
||||
capabilities = setOf(IdeaKotlinBinaryCapability("myGroup", "myModule", "1.0.0"))
|
||||
)
|
||||
assertEquals("myGroup:myModule:1.0.0", coordinates.displayString)
|
||||
assertEquals("myGroup:myModule:1.0.0(myGroup:myModule:1.0.0)", coordinates.identityString)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 3`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates(
|
||||
"myGroup", "myModule", "1.0.0",
|
||||
capabilities = setOf(IdeaKotlinBinaryCapability("myGroup", "myModule-foo", "1.0.0"))
|
||||
)
|
||||
assertEquals("myGroup:myModule-foo:1.0.0", coordinates.displayString)
|
||||
assertEquals("myGroup:myModule:1.0.0(myGroup:myModule-foo:1.0.0)", coordinates.identityString)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 4`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates(
|
||||
"myGroup", "myModule", "1.0.0",
|
||||
capabilities = setOf(IdeaKotlinBinaryCapability("notMyGroup", "myModule-foo", "1.0.0"))
|
||||
)
|
||||
assertEquals("myGroup:myModule:1.0.0", coordinates.displayString)
|
||||
|
||||
assertEquals(
|
||||
"myGroup:myModule:1.0.0(notMyGroup:myModule-foo:1.0.0)",
|
||||
coordinates.identityString
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 5`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates(
|
||||
"myGroup", "myModule", "1.0.0",
|
||||
capabilities = setOf(
|
||||
IdeaKotlinBinaryCapability("notMyGroup", "myModule-foo", "1.0.0"),
|
||||
IdeaKotlinBinaryCapability("myGroup", "myModule-foo", "1.0.0")
|
||||
)
|
||||
)
|
||||
assertEquals("myGroup:myModule-foo:1.0.0", coordinates.displayString)
|
||||
|
||||
assertEquals(
|
||||
"myGroup:myModule:1.0.0(notMyGroup:myModule-foo:1.0.0, myGroup:myModule-foo:1.0.0)",
|
||||
coordinates.identityString
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 6`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates(
|
||||
"myGroup", "myModule", "1.0.0",
|
||||
capabilities = setOf(
|
||||
IdeaKotlinBinaryCapability("myGroup", "myModule-foo", "1.0.0"),
|
||||
IdeaKotlinBinaryCapability("notMyGroup", "myModule-foo", "1.0.0"),
|
||||
IdeaKotlinBinaryCapability("notMyGroupEither", "myModule-foo", null),
|
||||
)
|
||||
)
|
||||
assertEquals("myGroup:myModule-foo:1.0.0", coordinates.displayString)
|
||||
|
||||
assertEquals(
|
||||
"myGroup:myModule:1.0.0(myGroup:myModule-foo:1.0.0, notMyGroup:myModule-foo:1.0.0, notMyGroupEither:myModule-foo)",
|
||||
coordinates.identityString
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 7`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates(
|
||||
"myGroup", "myModule", "1.0.0", "commonMain",
|
||||
capabilities = setOf(
|
||||
IdeaKotlinBinaryCapability("myGroup", "myModule-foo", "1.0.0"),
|
||||
IdeaKotlinBinaryCapability("notMyGroup", "myModule-foo", "1.0.0"),
|
||||
IdeaKotlinBinaryCapability("notMyGroupEither", "myModule-foo", null),
|
||||
)
|
||||
)
|
||||
assertEquals("myGroup:myModule-foo:1.0.0:commonMain", coordinates.displayString)
|
||||
|
||||
assertEquals(
|
||||
"myGroup:myModule:1.0.0:commonMain(myGroup:myModule-foo:1.0.0, notMyGroup:myModule-foo:1.0.0, notMyGroupEither:myModule-foo)",
|
||||
coordinates.identityString
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - displayString & identityString - sample 8`() {
|
||||
val coordinates = IdeaKotlinBinaryCoordinates(
|
||||
"myGroup", "myModule", "1.0.0", "commonMain",
|
||||
capabilities = setOf(
|
||||
IdeaKotlinBinaryCapability("myGroup", "myModule-foo", "1.0.0"),
|
||||
IdeaKotlinBinaryCapability("myGroup", "myModule-bar", "1.0.0"),
|
||||
IdeaKotlinBinaryCapability("notMyGroup", "myModule-foo", null),
|
||||
)
|
||||
)
|
||||
assertEquals("myGroup:myModule-(foo, bar):1.0.0:commonMain", coordinates.displayString)
|
||||
|
||||
assertEquals(
|
||||
"myGroup:myModule:1.0.0:commonMain(myGroup:myModule-foo:1.0.0, myGroup:myModule-bar:1.0.0, notMyGroup:myModule-foo)",
|
||||
coordinates.identityString
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user