[Build, IGS] Deserialize setup json using kotlinx-serialization-json

#KTI-1223 In Progress
This commit is contained in:
Alexander.Likhachev
2023-04-26 14:43:58 +02:00
committed by Space Team
parent 188203197b
commit e30b72fa8f
5 changed files with 121 additions and 1 deletions
+49
View File
@@ -57,6 +57,7 @@
<trust group="org.jetbrains.kotlin" name="kotlin-test-js" version="1.9.2?[0-9](-.+)?" regex="true"/>
<trust group="org.jetbrains.kotlin" name="kotlin-test-js-runner" version="1.9.2?[0-9](-.+)?" regex="true"/>
<trust group="org.jetbrains.kotlin" name="kotlin-test-junit" version="1.9.2?[0-9](-.+)?" regex="true"/>
<trust group="org.jetbrains.kotlin" name="kotlin-test-junit5" version="1.9.2?[0-9](-.+)?" regex="true"/>
<trust group="org.jetbrains.kotlin" name="kotlin-tooling-core" version="1.9.2?[0-9](-.+)?" regex="true"/>
<trust group="org.jetbrains.kotlin" name="kotlin-tooling-metadata" version="1.9.2?[0-9](-.+)?" regex="true"/>
<trust group="org.jetbrains.kotlin" name="kotlin-util-io" version="1.9.2?[0-9](-.+)?" regex="true"/>
@@ -7995,6 +7996,12 @@
<sha256 value="11d00f05f4c0e1a894ef4cbc4370ba818d21ef70ebb015c8731af43751cfa233" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core" version="1.5.0">
<artifact name="kotlinx-serialization-core-metadata-1.5.0-all.jar">
<md5 value="ba3b351367772dd33c8c6817d17d35de" origin="Generated by Gradle"/>
<sha256 value="ea58183fe54fd39f1857579c2c36e393d3d9a3a98f244f684f0b1e0355ff1520" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-js" version="1.4.1">
<artifact name="kotlinx-serialization-core-jsir-1.4.1.klib">
<md5 value="ddd26a3c17dc14aa0f80af72ced55cee" origin="Generated by Gradle"/>
@@ -8039,6 +8046,12 @@
<sha256 value="eba7f1c854296e4ce1418fb01360f8f10c5683e7c45aa3472018417a067636f3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-jvm" version="1.5.0">
<artifact name="kotlinx-serialization-core-jvm-1.5.0.jar">
<md5 value="7da2483af6578dd05bbb2011eb8ed494" origin="Generated by Gradle"/>
<sha256 value="ab6e36475700905a572254ab0d43c8bf1d9ae74430a75544917d242c6b2633c5" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-metadata" version="1.0.0">
<artifact name="kotlinx-serialization-core-metadata-1.0.0-all.jar">
<md5 value="3346a313a80ee63d222a5d2ba6f2b342" origin="Generated by Gradle"/>
@@ -8091,6 +8104,12 @@
<sha256 value="c316fc2b8445af447f11239388069b781a50e6747b1dc3218b1f155bb9410d19" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json" version="1.5.0">
<artifact name="kotlinx-serialization-json-metadata-1.5.0-all.jar">
<md5 value="972b35b9d2d4eef1029fc26bf15af0b9" origin="Generated by Gradle"/>
<sha256 value="a69930a717ffc1c7485bdb72b1bbb9d0eb8a43c3aaf3441975c155066a495fc9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-js" version="1.4.1">
<artifact name="kotlinx-serialization-json-jsir-1.4.1.klib">
<md5 value="e9511e5aebc1e44c629373329f0a0396" origin="Generated by Gradle"/>
@@ -8135,6 +8154,12 @@
<sha256 value="af604c46737121d4225fdb60ef0e17766a3c94b7c1c9ef76b4e3a5c7733d557e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-jvm" version="1.5.0">
<artifact name="kotlinx-serialization-json-jvm-1.5.0.jar">
<md5 value="3e17f3672da94b78965bb22bd0605e15" origin="Generated by Gradle"/>
<sha256 value="1af88bca61f42e69573b5f222bd6de489beec2dfec7f450027153b0f6024fdab" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-runtime" version="0.14.0">
<artifact name="kotlinx-serialization-runtime-0.14.0.jar">
<md5 value="83d898acda02b2e219bc84555bd9ea16" origin="Generated by Gradle"/>
@@ -8293,6 +8318,12 @@
<sha256 value="47f7d71b35dc331210b9ab219bbb00d54332981aa12eb5effe817de17e1ae7b3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit.jupiter" name="junit-jupiter-api" version="5.6.3">
<artifact name="junit-jupiter-api-5.6.3.jar">
<md5 value="b27438dcf9c99c73c9a0ff79cf4538de" origin="Generated by Gradle"/>
<sha256 value="26a22fe54dca351da9edccbcaa3c3cdcf25862cef3d2e04aa9363029a7beaa9d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit.jupiter" name="junit-jupiter-api" version="5.7.0">
<artifact name="junit-jupiter-api-5.7.0.jar">
<md5 value="e8567a8fe9ea0fa92b4da7a25f0c572c" origin="Generated by Gradle"/>
@@ -8323,6 +8354,12 @@
<sha256 value="8f994f4094790e246dc84de86a1ff4194ca85e8b13bedaca0207f727ebfbc813" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit.jupiter" name="junit-jupiter-engine" version="5.6.3">
<artifact name="junit-jupiter-engine-5.6.3.jar">
<md5 value="39324eb3b4ff1365dd3f9ae2421d6d60" origin="Generated by Gradle"/>
<sha256 value="980fbd50df3eeeb3e6b0868a22977148b3ac78cfae1dff3d593d656f2328dab1" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit.jupiter" name="junit-jupiter-engine" version="5.7.0">
<artifact name="junit-jupiter-engine-5.7.0.jar">
<md5 value="7e4f06555826c36fb1f7a44598431d4e" origin="Generated by Gradle"/>
@@ -8383,6 +8420,12 @@
<sha256 value="341621f4d998fd7b539b38baa7e1a3da80b7cac00b983e6206b01c9290915fe9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit.platform" name="junit-platform-commons" version="1.6.3">
<artifact name="junit-platform-commons-1.6.3.jar">
<md5 value="9fd0e23cd3409e8698e521d6953d6a18" origin="Generated by Gradle"/>
<sha256 value="49be6439351fdb50f0b7827e555acad26504a8084b6bc4019b2e6d73bc9da91a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit.platform" name="junit-platform-commons" version="1.7.0">
<artifact name="junit-platform-commons-1.7.0.jar">
<md5 value="d398290c354b2aeb6af8c420eff049c0" origin="Generated by Gradle"/>
@@ -8425,6 +8468,12 @@
<sha256 value="23b41ac95e4673f7b31e8502424451be4154fe4db1d448448945e2215473c246" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit.platform" name="junit-platform-engine" version="1.6.3">
<artifact name="junit-platform-engine-1.6.3.jar">
<md5 value="a59595c7f2e5f6c2f83850bc7aa007c0" origin="Generated by Gradle"/>
<sha256 value="de3b86523a65d824fa8e148c5ec510c4e034701b43100773f8c2e35da80ba0ec" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit.platform" name="junit-platform-engine" version="1.7.0">
<artifact name="junit-platform-engine-1.7.0.jar">
<md5 value="499a279ad63eb48941b252d9e1434102" origin="Generated by Gradle"/>
@@ -1,6 +1,7 @@
plugins {
`kotlin-dsl`
id("org.jetbrains.kotlin.jvm")
kotlin("jvm")
kotlin("plugin.serialization")
}
repositories {
@@ -8,8 +9,19 @@ repositories {
gradlePluginPortal()
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0")
implementation(kotlin("test-junit5"))
}
kotlin.jvmToolchain(8)
tasks {
test {
useJUnitPlatform()
}
}
gradlePlugin {
plugins {
create("internal-gradle-setup") {
@@ -0,0 +1,23 @@
/*
* 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.build
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import java.io.BufferedReader
import java.io.InputStream
import java.io.InputStreamReader
import kotlin.streams.asSequence
@Serializable
internal data class SetupFile(
val properties: Map<String, String>,
)
// can't use decodeFromStream: https://github.com/Kotlin/kotlinx.serialization/issues/2218
internal fun parseSetupFile(inputStream: InputStream): SetupFile =
Json.decodeFromString(BufferedReader(InputStreamReader(inputStream)).lines().asSequence().joinToString("\n"))
@@ -0,0 +1,29 @@
/*
* 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.build
import kotlin.test.*
class SetupFileParseTest {
private fun openPropertiesJsonStream() =
SetupFileParseTest::class.java.classLoader.getResourceAsStream("properties.json")
?: error("No properties.json file found in test resources")
@Test
fun testSimpleParsing() {
val setupFile = openPropertiesJsonStream().use {
parseSetupFile(it)
}
assertEquals(
mapOf(
"newProperty1" to "someValue",
"newProperty2" to "someOtherValue",
"alreadySetProperty" to "newValue",
),
setupFile.properties
)
}
}
@@ -0,0 +1,7 @@
{
"properties": {
"newProperty1": "someValue",
"newProperty2": "someOtherValue",
"alreadySetProperty": "newValue"
}
}