Update kotlinx-serialization dependency for serialization compiler plugin tests.

Properly set up dom-api-compat dependency for JS IR tests. Since this dependency is added
automatically for every Kotlin/JS library, it should be present during tests just as stdlib.

As a result, tests for serializable enums were changed since 1.6.0 runtime does not require enums to be explicitly serializable.
This commit is contained in:
Leonid Startsev
2023-10-26 15:08:56 +02:00
committed by Space Team
parent 3d720f9c03
commit 4fa121071a
10 changed files with 57 additions and 88 deletions
@@ -12,6 +12,14 @@ abstract class RuntimeClasspathProvider(val testServices: TestServices) {
abstract fun runtimeClassPaths(module: TestModule): List<File>
}
abstract class RuntimeClasspathJsProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) {
override fun runtimeClassPaths(module: TestModule): List<File> {
return listOf(
File(System.getProperty("kotlin.js.dom.api.compat")!!)
)
}
}
class RuntimeClasspathProvidersContainer(val providers: List<RuntimeClasspathProvider>) : TestService
private val TestServices.runtimeClasspathProviderContainer: RuntimeClasspathProvidersContainer by TestServices.testServiceAccessor()
+32 -32
View File
@@ -4264,22 +4264,22 @@
<sha256 value="abc222435fa7a892eda76a4a1623ad19792bf5c965426b630c38fb7fdf8a630d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core" version="1.4.1">
<artifact name="kotlinx-serialization-core-metadata-1.4.1-all.jar">
<md5 value="e6b48fe6c8e4d796541a88f552707ade" origin="Generated by Gradle"/>
<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"/>
<sha256 value="18c31786d261abb3ab648c94fedc69f3300baec407ed8994c56b8bc7b3667da5" origin="Generated by Gradle"/>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core" version="1.6.0">
<artifact name="kotlinx-serialization-core-metadata-1.6.0.jar">
<md5 value="b8883ec1d600078caf5b92ba2d844cd5" origin="Generated by Gradle"/>
<sha256 value="7e057bb942ae6a8007fecef62508ca47bed23c0c19815e4e96fb7767ca99595e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-js" version="1.6.0">
<artifact name="kotlinx-serialization-core-js-1.6.0.klib">
<md5 value="3a818174968299ee3c1206e339205914" origin="Generated by Gradle"/>
<sha256 value="f556fc24cea4a3c9defef2b055126d837a3828162e5a0b902eb6a4d758580da4" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-jvm" version="1.0.0">
@@ -4294,18 +4294,18 @@
<sha256 value="7ef62d1a0114052608d0f541c17b25f1faac17a270d5e26217ac4329ea164752" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-jvm" version="1.4.1">
<artifact name="kotlinx-serialization-core-jvm-1.4.1.jar">
<md5 value="a97020d828c89c7df2453bdfd1cd403a" origin="Generated by Gradle"/>
<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-jvm" version="1.6.0">
<artifact name="kotlinx-serialization-core-jvm-1.6.0.jar">
<md5 value="839a123c7f0e10641f88a667d4bee1ef" origin="Generated by Gradle"/>
<sha256 value="ec35128c4fb9044e99bbcf07f05ef2543bfa6d42030d7aadabaeacffb16e72c5" 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"/>
@@ -4318,22 +4318,22 @@
<sha256 value="ec642685d370f3aff4ae3efb8e441296d90db9f28b688d9ed888b25db760b844" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json" version="1.4.1">
<artifact name="kotlinx-serialization-json-metadata-1.4.1-all.jar">
<md5 value="47f4431d572e2a2bd68feda535249706" origin="Generated by Gradle"/>
<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"/>
<sha256 value="73ace4a978f0c360cd522a76092ee7e228e5f1fdbeb56e06b257fbb1cef52a55" origin="Generated by Gradle"/>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json" version="1.6.0">
<artifact name="kotlinx-serialization-json-metadata-1.6.0.jar">
<md5 value="207b3b882c39c5d988d4a3fad585c994" origin="Generated by Gradle"/>
<sha256 value="67b01a4b9fbf8329a7ef07ed411f9aa61cc6e59bb869f868264c399d16eb4f84" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-js" version="1.6.0">
<artifact name="kotlinx-serialization-json-js-1.6.0.klib">
<md5 value="d514b57b82ea48c4ea789715be24a15c" origin="Generated by Gradle"/>
<sha256 value="827b874d393a009ecc76eaf6c247a49ac1a044dcc9cdae4c5f5ca41fd99a4cb2" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-jvm" version="1.3.3">
@@ -4342,18 +4342,18 @@
<sha256 value="2a0dd7c162c3cc6d713610b81d809bd5976a140dc9efb1eb7152caf093509965" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-jvm" version="1.4.1">
<artifact name="kotlinx-serialization-json-jvm-1.4.1.jar">
<md5 value="9c0d33c9b12c371a5d8934c97466eb70" origin="Generated by Gradle"/>
<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-json-jvm" version="1.6.0">
<artifact name="kotlinx-serialization-json-jvm-1.6.0.jar">
<md5 value="e298505b652f4f79122d910497da8926" origin="Generated by Gradle"/>
<sha256 value="1f72bcab9235642591fb5aaba86e1431701ef00effa5f4054d35843dc7951176" 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"/>
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.js.test.ir.AbstractJsIrTest
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.RuntimeClasspathJsProvider
import org.jetbrains.kotlin.test.services.RuntimeClasspathProvider
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlinx.atomicfu.compiler.extensions.AtomicfuLoweringExtension
@@ -41,8 +42,8 @@ class AtomicfuEnvironmentConfigurator(testServices: TestServices) : EnvironmentC
class AtomicfuJsRuntimeClasspathProvider(
testServices: TestServices
) : RuntimeClasspathProvider(testServices) {
) : RuntimeClasspathJsProvider(testServices) {
override fun runtimeClassPaths(module: TestModule): List<File> {
return listOf(atomicfuJsCompileDependency, atomicfuJsIrRuntime).map { File(it) }
return super.runtimeClassPaths(module) + listOf(atomicfuJsCompileDependency, atomicfuJsIrRuntime).map { File(it) }
}
}
}
@@ -50,11 +50,11 @@ dependencies {
testImplementation(project(":kotlinx-serialization-compiler-plugin.backend"))
testImplementation(project(":kotlinx-serialization-compiler-plugin.cli"))
testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.4.1")
testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1")
testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.0")
testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")
coreJsIrRuntimeForTests("org.jetbrains.kotlinx:kotlinx-serialization-core:1.4.1") { isTransitive = false }
jsonJsIrRuntimeForTests("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1") { isTransitive = false }
coreJsIrRuntimeForTests("org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.0") { isTransitive = false }
jsonJsIrRuntimeForTests("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") { isTransitive = false }
testRuntimeOnly(intellijCore())
testRuntimeOnly(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
@@ -8,7 +8,7 @@ import kotlinx.serialization.encoding.*
enum class SimpleEnum { A, B }
// Annotated enums do not require @Serializable if runtime has proper factory funciton (runtime ver. >= 1.5.0)
<!EXPLICIT_SERIALIZABLE_IS_REQUIRED!>enum<!> class MarkedNameEnum { @SerialName("a") A, B}
enum class MarkedNameEnum { @SerialName("a") A, B}
@Serializable
enum class ExplicitlyMarkedEnum { @SerialName("a") A, B}
@@ -62,18 +62,6 @@ public object EnumSerializer : kotlinx.serialization.KSerializer<ExplicitlyMarke
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer<ExplicitlyMarkedEnum> {
private constructor `$serializer`()
public open override /*1*/ /*synthesized*/ val descriptor: kotlinx.serialization.descriptors.SerialDescriptor
public open override /*1*/ /*synthesized*/ fun childSerializers(): kotlin.Array<kotlinx.serialization.KSerializer<*>>
public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.encoding.Decoder): ExplicitlyMarkedEnum
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.encoding.Encoder, /*1*/ value: ExplicitlyMarkedEnum): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array<kotlinx.serialization.KSerializer<*>>
}
public companion object Companion {
private constructor Companion()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -53,22 +53,6 @@ FILE: enums.kt
}
public final object $serializer : R|kotlinx/serialization/internal/GeneratedSerializer<WithNames>| {
public final fun serialize(encoder: R|kotlinx/serialization/encoding/Encoder|, value: R|WithNames|): R|kotlin/Unit|
public final fun deserialize(decoder: R|kotlinx/serialization/encoding/Decoder|): R|WithNames|
public final val descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor|
public get(): R|kotlinx/serialization/descriptors/SerialDescriptor|
public final fun childSerializers(): R|kotlin/Array<kotlinx/serialization/KSerializer<*>>|
private constructor(): R|WithNames.$serializer| {
super<R|kotlin/Any|>()
}
}
}
@R|kotlinx/serialization/Serializable|() public final class Holder : R|kotlin/Any| {
public constructor(p: R|Plain|, w: R|WithNames|): R|Holder| {
@@ -378,22 +378,6 @@ FILE: metaSerializable.kt
}
public final object $serializer : R|kotlinx/serialization/internal/GeneratedSerializer<TestEnum>| {
public final fun serialize(encoder: R|kotlinx/serialization/encoding/Encoder|, value: R|TestEnum|): R|kotlin/Unit|
public final fun deserialize(decoder: R|kotlinx/serialization/encoding/Decoder|): R|TestEnum|
public final val descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor|
public get(): R|kotlinx/serialization/descriptors/SerialDescriptor|
public final fun childSerializers(): R|kotlin/Array<kotlinx/serialization/KSerializer<*>>|
private constructor(): R|TestEnum.$serializer| {
super<R|kotlin/Any|>()
}
}
}
@R|MySerializableWithInfo|(value = Int(123), kclass = <getClass>(Q|kotlin/String|)) public final object TestObject : R|kotlin/Any| {
private constructor(): R|TestObject| {
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.runners.codegen.configureModernJavaTest
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.RuntimeClasspathJsProvider
import org.jetbrains.kotlin.test.services.RuntimeClasspathProvider
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar
@@ -47,9 +48,9 @@ class SerializationRuntimeClasspathJvmProvider(testServices: TestServices) : Run
}
}
class SerializationRuntimeClasspathJsProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) {
class SerializationRuntimeClasspathJsProvider(testServices: TestServices) : RuntimeClasspathJsProvider(testServices) {
override fun runtimeClassPaths(module: TestModule): List<File> {
return listOf(
return super.runtimeClassPaths(module) + listOf(
File(System.getProperty("serialization.core.path")!!),
File(System.getProperty("serialization.json.path")!!),
)
@@ -9,17 +9,20 @@ fun Test.useJsIrBoxTests(
buildDir: String = "",
fullStdLib: String = "libraries/stdlib/build/classes/kotlin/js/main",
reducedStdlibPath: String = "libraries/stdlib/js-ir-minimal-for-test/build/classes/kotlin/js/main",
kotlinJsTestPath: String = "libraries/kotlin.test/js-ir/build/classes/kotlin/js/main"
kotlinJsTestPath: String = "libraries/kotlin.test/js-ir/build/classes/kotlin/js/main",
domApiCompatPath: String = "libraries/kotlin-dom-api-compat/build/classes/kotlin/main"
) {
setupV8()
dependsOn(":kotlin-stdlib:jsJar")
dependsOn(":kotlin-stdlib:jsJarForTests") // TODO: think how to remove dependency on the artifact in this place
dependsOn(":kotlin-test:kotlin-test-js-ir:compileKotlinJs")
dependsOn(":kotlin-stdlib-js-ir-minimal-for-test:compileKotlinJs")
dependsOn(":kotlin-dom-api-compat:compileKotlinJs")
systemProperty("kotlin.js.test.root.out.dir", buildDir)
systemProperty("kotlin.js.full.stdlib.path", fullStdLib)
systemProperty("kotlin.js.reduced.stdlib.path", reducedStdlibPath)
systemProperty("kotlin.js.kotlin.test.path", kotlinJsTestPath)
systemProperty("kotlin.js.stdlib.klib.path", "libraries/stdlib/build/libs/kotlin-stdlib-js-$version.klib")
}
systemProperty("kotlin.js.dom.api.compat", domApiCompatPath)
}