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,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")!!),
)