[Gradle, JS] Add nullable custom fields

^KT-42395 fixed
This commit is contained in:
Ilya Goncharov
2023-01-20 17:40:05 +00:00
committed by Space Team
parent 7854b01473
commit 4e13b7a202
3 changed files with 33 additions and 3 deletions
@@ -6,6 +6,8 @@
package org.jetbrains.kotlin.gradle
import com.google.gson.Gson
import com.google.gson.JsonNull
import com.google.gson.JsonObject
import org.gradle.api.logging.LogLevel
import org.gradle.api.logging.configuration.WarningMode
import org.gradle.testkit.runner.BuildResult
@@ -1112,6 +1114,30 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
}
}
@DisplayName("package.json custom fields")
@GradleTest
fun testPackageJsonCustomField(gradleVersion: GradleVersion) {
project("kotlin-js-browser-project", gradleVersion) {
buildGradleKts.modify(::transformBuildScriptWithPluginsDsl)
build("rootPackageJson") {
assertTasksExecuted(":app:packageJson")
val jso = projectPath.resolve("build/js/packages/kotlin-js-browser-app")
.resolve(NpmProject.PACKAGE_JSON)
.let {
Gson().fromJson(it.readText(), JsonObject::class.java)
}
assertEquals(1, jso.get("customField1").asJsonObject.get("one").asInt)
assertEquals(2, jso.get("customField1").asJsonObject.get("two").asInt)
assertEquals(JsonNull.INSTANCE, jso.get("customField2").asJsonNull)
assertEquals(JsonNull.INSTANCE, jso.get("customField3").asJsonNull)
assertEquals(JsonNull.INSTANCE, jso.get("customField4").asJsonObject.get("foo").asJsonNull)
}
}
}
@DisplayName("kotlin/js compiler warning")
@GradleTest
fun testKotlinJsCompilerWarn(gradleVersion: GradleVersion) {
@@ -47,7 +47,10 @@ kotlin {
compilations.named("main") {
packageJson {
customField("customField", mapOf("one" to 1, "two" to 2))
customField("customField1", mapOf("one" to 1, "two" to 2))
customField("customField2", null)
customField("customField3" to null)
customField("customField4", mapOf("foo" to null))
}
}
}
@@ -58,11 +58,11 @@ class PackageJson(
val bundledDependencies = mutableListOf<String>()
get() = field ?: mutableListOf()
fun customField(pair: Pair<String, Any>) {
fun customField(pair: Pair<String, Any?>) {
customFields[pair.first] = pair.second
}
fun customField(key: String, value: Any) {
fun customField(key: String, value: Any?) {
customFields[key] = value
}
@@ -92,6 +92,7 @@ class PackageJson(
val gson = GsonBuilder()
.setPrettyPrinting()
.disableHtmlEscaping()
.serializeNulls()
.addSerializationExclusionStrategy(
object : ExclusionStrategy {
override fun shouldSkipField(f: FieldAttributes?): Boolean =