From 337a66f90629c6f2be3845b70e6c735262630bfd Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 29 Sep 2020 13:35:33 +0300 Subject: [PATCH] [Gradle, JS] Fix NpmRange string representation with concrete version ^KT-42222 fixed ^KT-40986 fixed ^KT-39838 fixed --- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 15 ++++++++--- .../kotlin/gradle/targets/js/npm/NpmRange.kt | 26 +++++++++++++++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index 800ad706b0d..919306003c2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -609,7 +609,10 @@ abstract class AbstractKotlin2JsGradlePluginIT(private val irBackend: Boolean) : val packageJson = Gson().fromJson(it, PackageJson::class.java) val devDep = "42" val devDepVersion = "0.0.1" - assertTrue("There is expected dev dependency \"$devDep\": \"$devDepVersion\" in package.json") { + assertTrue( + "Dev dependency \"$devDep\": \"$devDepVersion\" in package.json expected, but actual:\n" + + "${packageJson.devDependencies}" + ) { val devDependencies = packageJson.devDependencies devDependencies .containsKey(devDep) && @@ -618,7 +621,10 @@ abstract class AbstractKotlin2JsGradlePluginIT(private val irBackend: Boolean) : val dep = "@yworks/optimizer" val depVersion = "1.0.6" - assertTrue("There is expected dependency \"$dep\": \"$depVersion\" in package.json") { + assertTrue( + "Dependency \"$dep\": \"$depVersion\" in package.json expected, but actual:\n" + + "${packageJson.dependencies}" + ) { val dependencies = packageJson.dependencies dependencies .containsKey(dep) && @@ -627,7 +633,10 @@ abstract class AbstractKotlin2JsGradlePluginIT(private val irBackend: Boolean) : val peerDep = "date-arithmetic" val peerDepVersion = "4.1.0" - assertTrue("There is expected peer dependency \"$peerDep\": \"$peerDepVersion\" in package.json") { + assertTrue( + "Peer dependency \"$peerDep\": \"$peerDepVersion\" in package.json expected, but actual:\n" + + "${packageJson.peerDependencies}" + ) { val peerDependencies = packageJson.peerDependencies peerDependencies .containsKey(peerDep) && diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRange.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRange.kt index 8db96b48639..23afa19577b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRange.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRange.kt @@ -21,8 +21,30 @@ data class NpmRange( val endVersion: SemVer? = null, val endInclusive: Boolean = false ) { - override fun toString(): String = - "${if (startVersion != null) "${if (startInclusive) GTEQ else GT}$startVersion" else ""} ${if (endVersion != null) "${if (endInclusive) LTEQ else LT}$endVersion" else ""}" + override fun toString(): String { + if (startVersion == endVersion && startInclusive && endInclusive) { + return startVersion.toString() + } + + val start = if (startVersion != null) + "${if (startInclusive) GTEQ else GT}$startVersion" + else + "" + + val end = if (endVersion != null) + "${if (endInclusive) LTEQ else LT}$endVersion" + else + "" + + return if (start.isEmpty()) + end + else { + if (end.isEmpty()) + start + else + "$start $end" + } + } override fun equals(other: Any?): Boolean { if (this === other) return true