diff --git a/build-tools/build.gradle.kts b/build-tools/build.gradle.kts index d4f690d22cf..f8df91799d4 100644 --- a/build-tools/build.gradle.kts +++ b/build-tools/build.gradle.kts @@ -44,7 +44,7 @@ dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion") implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion") implementation("com.ullink.slack:simpleslackapi:1.2.0") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.14.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0") implementation("io.ktor:ktor-client-auth:1.2.1") implementation("io.ktor:ktor-client-core:1.2.1") diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt index 821ec385b91..4ed4863611e 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt @@ -17,8 +17,9 @@ package org.jetbrains.kotlin import groovy.lang.Closure -import kotlinx.serialization.* -import kotlinx.serialization.json.* +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonConfiguration import org.gradle.api.Action import org.gradle.api.Project import org.gradle.process.ExecResult @@ -420,14 +421,14 @@ private fun deviceLauncher(project: Project) = object : ExecutorService { } return out.toString().run { check(isNotEmpty()) - @kotlinx.serialization.Serializable + @Serializable data class DeviceTarget(val name: String, val udid: String, val state: String, val type: String) split("\n") .filter { it.isNotEmpty() } - .map { - Json(JsonConfiguration.Stable.copy(strictMode = false)) + .map { Json(JsonConfiguration.Stable.copy(ignoreUnknownKeys = false)) .parse(DeviceTarget.serializer(), it) - }.first { + } + .first { it.type == "device" && deviceName?.run { this == it.name } ?: true } .udid diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExternalReportUtils.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExternalReportUtils.kt index ee426c8f3e0..6cc32de0299 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExternalReportUtils.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExternalReportUtils.kt @@ -1,13 +1,16 @@ package org.jetbrains.kotlin -import kotlinx.io.PrintWriter -import kotlinx.serialization.* -import kotlinx.serialization.json.* +import kotlinx.serialization.ImplicitReflectionSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import kotlinx.serialization.parse +import kotlinx.serialization.stringify import java.io.File import java.io.FileReader +import java.io.PrintWriter -@kotlinx.serialization.Serializable +@Serializable data class ExternalTestReport(val statistics: Statistics, val groups: List) @ImplicitReflectionSerializer diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/KonanTestSuiteReport.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/KonanTestSuiteReport.kt index da2412caa2c..3534825ba54 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/KonanTestSuiteReport.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/KonanTestSuiteReport.kt @@ -1,8 +1,7 @@ package org.jetbrains.kotlin -import kotlinx.io.PrintWriter -import kotlinx.io.StringWriter -import kotlinx.serialization.Optional +import java.io.PrintWriter +import java.io.StringWriter import kotlinx.serialization.Serializable import org.gradle.api.Project @@ -13,7 +12,7 @@ enum class TestStatus { SKIPPED } -@kotlinx.serialization.Serializable +@Serializable data class Statistics( var passed: Int = 0, var failed: Int = 0, @@ -42,20 +41,20 @@ val Statistics.total: Int class TestFailedException(msg:String) : RuntimeException(msg) -@kotlinx.serialization.Serializable -data class KonanTestGroupReport(val name:String, val suites:List) +@Serializable +data class KonanTestGroupReport(val name: String, val suites: List) -@kotlinx.serialization.Serializable +@Serializable data class KonanTestSuiteReport(val name: String, val tests: List) -@kotlinx.serialization.Serializable -data class KonanTestCaseReport(val name:String, val status: TestStatus, @Optional val comment:String? = null) +@Serializable +data class KonanTestCaseReport(val name: String, val status: TestStatus, val comment: String? = null) -class KonanTestSuiteReportEnvironment(val name:String, val project: Project, val statistics: Statistics) { +class KonanTestSuiteReportEnvironment(val name: String, val project: Project, val statistics: Statistics) { private val tc = if (Tc.enabled) TeamCityTestPrinter(project) else null val tests = mutableListOf() fun executeTest(testName: String, action:() -> Unit) { - var test:KonanTestCaseReport? = null + var test: KonanTestCaseReport? try { tc?.startTest(testName) action() diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/XcRunRuntimeUtils.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/XcRunRuntimeUtils.kt index 235d8ef6628..6eb3dd9067c 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/XcRunRuntimeUtils.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/XcRunRuntimeUtils.kt @@ -2,6 +2,7 @@ package org.jetbrains.kotlin import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonConfiguration import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.Xcode import kotlin.math.min @@ -25,7 +26,8 @@ private fun compareStringsAsVersions(version1: String, version2: String): Int { * Returns parsed output of `xcrun simctl list runtimes -j`. */ private fun Xcode.getSimulatorRuntimeDescriptors(): List = - Json.nonstrict.parse(ListRuntimesReport.serializer(), this.simulatorRuntimes).runtimes + Json(JsonConfiguration.Stable.copy(ignoreUnknownKeys = true, useArrayPolymorphism = true)) + .parse(ListRuntimesReport.serializer(), this.simulatorRuntimes).runtimes /** * Returns first available simulator runtime for [target] with at least [osMinVersion] OS version.