Skip to content

Commit 961e87d

Browse files
authored
Adapt tests for K2 and upcoming deprecations in K1 (#2230)
- Move meta-serializable annotations to top-level. - Specify argument for `@Serializable` when companion serializer is used.
1 parent fc9aef5 commit 961e87d

File tree

6 files changed

+35
-27
lines changed

6 files changed

+35
-27
lines changed

core/commonTest/src/kotlinx/serialization/MetaSerializableTest.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@ import kotlinx.serialization.test.*
44
import kotlin.reflect.KClass
55
import kotlin.test.*
66

7-
class MetaSerializableTest {
7+
@MetaSerializable
8+
@Target(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY)
9+
annotation class MySerializable
810

9-
@MetaSerializable
10-
@Target(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY)
11-
annotation class MySerializable
11+
@MetaSerializable
12+
@Target(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY)
13+
annotation class MySerializableWithInfo(
14+
val value: Int,
15+
val kclass: KClass<*>
16+
)
1217

13-
@MetaSerializable
14-
@Target(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY)
15-
annotation class MySerializableWithInfo(
16-
val value: Int,
17-
val kclass: KClass<*>
18-
)
18+
19+
class MetaSerializableTest {
1920

2021
@MySerializable
2122
class Project1(val name: String, val language: String)

core/commonTest/src/kotlinx/serialization/features/SchemaTest.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ package kotlinx.serialization.features
77
import kotlinx.serialization.*
88
import kotlinx.serialization.builtins.*
99
import kotlinx.serialization.descriptors.*
10+
import kotlinx.serialization.encoding.Decoder
11+
import kotlinx.serialization.encoding.Encoder
1012
import kotlinx.serialization.internal.*
1113
import kotlinx.serialization.test.EnumSerializer
1214
import kotlin.test.*
@@ -18,15 +20,17 @@ class SchemaTest {
1820
@Serializable
1921
data class Box<T>(val boxed: T)
2022

21-
@Serializable
23+
@Serializable(Data1.Companion::class)
2224
data class Data1(val l: List<Int> = emptyList(), val s: String) {
23-
@Serializer(forClass = Data1::class)
24-
companion object {
25-
// TODO removal of explicit type crashes the compiler
26-
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("Data1") {
25+
companion object: KSerializer<Data1> {
26+
override val descriptor = buildClassSerialDescriptor("Data1") {
2727
element("l", listSerialDescriptor<Int>(), isOptional = true)
2828
element("s", serialDescriptor<String>())
2929
}
30+
31+
override fun serialize(encoder: Encoder, value: Data1) = error("Should not be called")
32+
33+
override fun deserialize(decoder: Decoder): Data1 = error("Should not be called")
3034
}
3135
}
3236

formats/json-tests/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ apply(from = rootProject.file("gradle/configure-source-sets.gradle"))
1515
tasks.withType<Kotlin2JsCompile> {
1616
if (this.name == "compileTestKotlinJsLegacy") {
1717
this.exclude("**/PropertyInitializerTest.kt")
18+
// Partially custom serializers without 'implicit customisation by companion' annotation are not supported on Legacy JS
19+
this.exclude("**/PartiallyCustomSerializerTest.kt", "**/JsonCustomSerializersTest.kt")
1820
}
1921
}
2022

formats/json-tests/commonTest/src/kotlinx/serialization/features/MetaSerializableJsonTest.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ import kotlinx.serialization.*
44
import kotlinx.serialization.json.*
55
import kotlin.test.*
66

7-
class MetaSerializableJsonTest : JsonTestBase() {
8-
@MetaSerializable
9-
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.CLASS)
10-
annotation class JsonComment(val comment: String)
7+
@MetaSerializable
8+
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.CLASS)
9+
annotation class JsonComment(val comment: String)
10+
11+
@JsonComment("class_comment")
12+
data class IntDataCommented(val i: Int)
1113

12-
@JsonComment("class_comment")
13-
data class IntDataCommented(val i: Int)
14+
class MetaSerializableJsonTest : JsonTestBase() {
1415

1516
@Serializable
1617
data class Carrier(

formats/json-tests/commonTest/src/kotlinx/serialization/features/PartiallyCustomSerializerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import kotlinx.serialization.json.Json
1010
import kotlin.test.Test
1111
import kotlin.test.assertEquals
1212

13-
@Serializable
13+
@Serializable(WithNull.Companion::class)
1414
data class WithNull(@SerialName("value") val nullable: String? = null) {
1515
@Serializer(forClass = WithNull::class)
1616
companion object : KSerializer<WithNull> {

formats/json-tests/commonTest/src/kotlinx/serialization/json/JsonCustomSerializersTest.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
3434
@Serializable
3535
data class BList(@Id(1) val bs: List<B>)
3636

37-
@Serializable
37+
@Serializable(C.Companion::class)
3838
data class C(@Id(1) val a: Int = 31, @Id(2) val b: Int = 42) {
3939
@Serializer(forClass = C::class)
4040
companion object : KSerializer<C> {
@@ -50,7 +50,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
5050
@Serializable
5151
data class CList1(@Id(1) val c: List<C>)
5252

53-
@Serializable
53+
@Serializable(CList2.Companion::class)
5454
data class CList2(@Id(1) val d: Int = 5, @Id(2) val c: List<C>) {
5555
@Serializer(forClass = CList2::class)
5656
companion object : KSerializer<CList2> {
@@ -63,7 +63,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
6363
}
6464
}
6565

66-
@Serializable
66+
@Serializable(CList3.Companion::class)
6767
data class CList3(@Id(1) val e: List<C> = emptyList(), @Id(2) val f: Int) {
6868
@Serializer(forClass = CList3::class)
6969
companion object : KSerializer<CList3> {
@@ -76,7 +76,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
7676
}
7777
}
7878

79-
@Serializable
79+
@Serializable(CList4.Companion::class)
8080
data class CList4(@Id(1) val g: List<C> = emptyList(), @Id(2) val h: Int) {
8181
@Serializer(forClass = CList4::class)
8282
companion object : KSerializer<CList4> {
@@ -89,7 +89,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
8989
}
9090
}
9191

92-
@Serializable
92+
@Serializable(CList5.Companion::class)
9393
data class CList5(@Id(1) val g: List<Int> = emptyList(), @Id(2) val h: Int) {
9494
@Serializer(forClass = CList5::class)
9595
companion object : KSerializer<CList5> {

0 commit comments

Comments
 (0)