From a2ffba275c6586409382982535bc52f062efa705 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 24 Aug 2022 17:33:39 +0300 Subject: [PATCH] [Serialization] Migrate all tests to new test infrastructure --- .../kotlin/generators/tests/GenerateTests.kt | 4 - .../kotlinx-serialization/build.gradle.kts | 5 +- .../testData/boxIr/annotationsOnFile.kt | 3 +- .../testData/boxIr/classSerializerAsObject.kt | 3 +- .../testData/boxIr/enumsAreCached.kt | 3 +- .../testData/boxIr/generics.kt | 3 +- .../testData/boxIr/inlineClasses.kt | 3 +- .../testData/boxIr/sealedInterfaces.kt | 3 +- .../{Basic.ir.txt => Basic.asm.ir.txt} | 0 .../codegen/{Basic.txt => Basic.asm.txt} | 0 .../testData/codegen/Basic.kt | 4 +- ...{Delegated.ir.txt => Delegated.asm.ir.txt} | 0 .../{Delegated.txt => Delegated.asm.txt} | 0 .../testData/codegen/Delegated.kt | 4 +- .../{Sealed.ir.txt => Sealed.asm.ir.txt} | 0 .../codegen/{Sealed.txt => Sealed.asm.txt} | 0 .../testData/codegen/Sealed.kt | 4 +- .../testData/diagnostics/LocalAndAnonymous.kt | 2 +- .../diagnostics/NullabilityIncompatible.kt | 3 +- .../testData/firMembers/abstractAndSealed.kt | 2 +- .../firMembers/classWithGenericParameters.kt | 2 +- .../testData/firMembers/defaultProperties.kt | 2 +- .../testData/firMembers/enums.kt | 2 +- .../testData/firMembers/inlineClasses.kt | 2 +- .../testData/firMembers/multipleProperties.kt | 2 +- .../privatePropertiesSerialization.kt | 2 +- .../testData/firMembers/serializableObject.kt | 2 +- ...SerializationFirBlackBoxTestGenerated.java | 81 ---------- .../SerializationFirMembersTestGenerated.java | 80 ---------- ...LikeInstructionsListingTestGenerated.java} | 23 ++- ...SerializationFirBlackBoxTestGenerated.java | 142 ++++++++++++++++++ ...LikeInstructionsListingTestGenerated.java} | 23 ++- .../SerializationIrBoxTestGenerated.java | 2 +- ...lizationPluginDiagnosticTestGenerated.java | 34 +++-- ...ationWithoutRuntimeIrBoxTestGenerated.java | 2 +- .../AbstractSerializationFirMembersTest.kt | 79 ---------- .../AbstractSerializationIrBoxTest.kt | 21 --- ...tractSerializationIrBytecodeListingTest.kt | 33 ---- ...tSerializationPluginBytecodeListingTest.kt | 25 --- ...stractSerializationPluginDiagnosticTest.kt | 25 --- ...actSerializationWithoutRuntimeIrBoxTest.kt | 17 --- .../kotlinx/serialization/RuntimeSearch.kt | 64 ++------ .../kotlinx/serialization/TestGenerator.kt | 51 +++---- .../AsmLikeInstructionsListingTests.kt | 34 +++++ .../kotlinx/serialization/runners/BoxTests.kt | 33 ++++ .../serialization/runners/DiagnosticTests.kt | 17 +++ .../serializationConfiguration.kt | 53 +++++++ 47 files changed, 388 insertions(+), 511 deletions(-) rename plugins/kotlinx-serialization/testData/codegen/{Basic.ir.txt => Basic.asm.ir.txt} (100%) rename plugins/kotlinx-serialization/testData/codegen/{Basic.txt => Basic.asm.txt} (100%) rename plugins/kotlinx-serialization/testData/codegen/{Delegated.ir.txt => Delegated.asm.ir.txt} (100%) rename plugins/kotlinx-serialization/testData/codegen/{Delegated.txt => Delegated.asm.txt} (100%) rename plugins/kotlinx-serialization/testData/codegen/{Sealed.ir.txt => Sealed.asm.ir.txt} (100%) rename plugins/kotlinx-serialization/testData/codegen/{Sealed.txt => Sealed.asm.txt} (100%) delete mode 100644 plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationFirBlackBoxTestGenerated.java delete mode 100644 plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationFirMembersTestGenerated.java rename plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/{SerializationIrBytecodeListingTestGenerated.java => runners/SerializationAsmLikeInstructionsListingTestGenerated.java} (65%) create mode 100644 plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirBlackBoxTestGenerated.java rename plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/{SerializationPluginBytecodeListingTestGenerated.java => runners/SerializationIrAsmLikeInstructionsListingTestGenerated.java} (64%) rename plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/{ => runners}/SerializationIrBoxTestGenerated.java (98%) rename plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/{ => runners}/SerializationPluginDiagnosticTestGenerated.java (88%) rename plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/{ => runners}/SerializationWithoutRuntimeIrBoxTestGenerated.java (96%) delete mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationFirMembersTest.kt delete mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBoxTest.kt delete mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBytecodeListingTest.kt delete mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginBytecodeListingTest.kt delete mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginDiagnosticTest.kt delete mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationWithoutRuntimeIrBoxTest.kt create mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/AsmLikeInstructionsListingTests.kt create mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/BoxTests.kt create mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/DiagnosticTests.kt create mode 100644 plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/serializationConfiguration.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 86b99e65283..e13368d374c 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.fir.plugin.runners.AbstractFirPluginDiagnosticTest import org.jetbrains.kotlin.generators.TestGroup import org.jetbrains.kotlin.generators.generateTestGroupSuiteWithJUnit5 import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite -import org.jetbrains.kotlin.generators.model.AnnotationModel import org.jetbrains.kotlin.generators.model.annotation import org.jetbrains.kotlin.incremental.* import org.jetbrains.kotlin.jvm.abi.* @@ -38,9 +37,6 @@ import org.jetbrains.kotlin.samWithReceiver.* import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlinx.atomicfu.AbstractAtomicfuJsIrTest import org.jetbrains.kotlinx.atomicfu.AbstractAtomicfuJvmIrTest -import org.jetbrains.kotlinx.serialization.AbstractSerializationIrBytecodeListingTest -import org.jetbrains.kotlinx.serialization.AbstractSerializationPluginBytecodeListingTest -import org.jetbrains.kotlinx.serialization.AbstractSerializationPluginDiagnosticTest import org.junit.jupiter.api.Tag fun main(args: Array) { diff --git a/plugins/kotlinx-serialization/build.gradle.kts b/plugins/kotlinx-serialization/build.gradle.kts index 0290b836cf4..38ff7df9e8d 100644 --- a/plugins/kotlinx-serialization/build.gradle.kts +++ b/plugins/kotlinx-serialization/build.gradle.kts @@ -16,14 +16,12 @@ dependencies { testApi(project(":compiler:cli")) testApi(project(":kotlinx-serialization-compiler-plugin.cli")) - testApi(projectTests(":compiler:tests-common")) testApi(projectTests(":compiler:test-infrastructure")) testApi(projectTests(":compiler:test-infrastructure-utils")) testApi(projectTests(":compiler:tests-compiler-utils")) testApi(projectTests(":compiler:tests-common-new")) testImplementation(projectTests(":generators:test-generator")) - testApi(commonDependency("junit:junit")) - testApiJUnit5(vintageEngine = true) + testApiJUnit5() testImplementation(project(":kotlinx-serialization-compiler-plugin.common")) testImplementation(project(":kotlinx-serialization-compiler-plugin.k1")) @@ -37,6 +35,7 @@ dependencies { testRuntimeOnly(intellijCore()) testRuntimeOnly(project(":kotlin-reflect")) testRuntimeOnly(project(":core:descriptors.runtime")) + testRuntimeOnly(project(":compiler:fir:fir-serialization")) } optInToExperimentalCompilerApi() diff --git a/plugins/kotlinx-serialization/testData/boxIr/annotationsOnFile.kt b/plugins/kotlinx-serialization/testData/boxIr/annotationsOnFile.kt index 764082ce70a..ad9076df21e 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/annotationsOnFile.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/annotationsOnFile.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM_IR // WITH_STDLIB @@ -75,4 +74,4 @@ fun testOnFile(): String { fun box(): String { return testOnFile() -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/boxIr/classSerializerAsObject.kt b/plugins/kotlinx-serialization/testData/boxIr/classSerializerAsObject.kt index fac66f489b6..f05c466c1d1 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/classSerializerAsObject.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/classSerializerAsObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM_IR // WITH_STDLIB @@ -65,4 +64,4 @@ fun box(): String { assertEquals("ObjectSerializerDummy", descs[3].serialName) assertEquals("ClassSerializerOnClass", descs[4].serialName) return "OK" -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/boxIr/enumsAreCached.kt b/plugins/kotlinx-serialization/testData/boxIr/enumsAreCached.kt index a0814df6729..5a7f33830e0 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/enumsAreCached.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/enumsAreCached.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM_IR // WITH_STDLIB @@ -45,4 +44,4 @@ fun testSerialization(previous: String): String { fun box(): String { return testSerialization(testSerializers()) -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/boxIr/generics.kt b/plugins/kotlinx-serialization/testData/boxIr/generics.kt index 3e523c7a09c..16e8ec3fe36 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/generics.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/generics.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM_IR // WITH_STDLIB @@ -19,4 +18,4 @@ fun box(): String { val decoded = Json.decodeFromString(Holder.serializer(), str) if (decoded.f1.t != holder.f1.t) return "f1.t: ${decoded.f1.t}" return "OK" -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/boxIr/inlineClasses.kt b/plugins/kotlinx-serialization/testData/boxIr/inlineClasses.kt index c19fec41cc5..320d2500db2 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/inlineClasses.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/inlineClasses.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM_IR // WITH_STDLIB @@ -19,4 +18,4 @@ fun box(): String { val s = Json.encodeToString(Holder.serializer(), Holder(Foo(42))) if (s != """{"f":42}""") return s return "OK" -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/boxIr/sealedInterfaces.kt b/plugins/kotlinx-serialization/testData/boxIr/sealedInterfaces.kt index 55692594a93..565a32820e7 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/sealedInterfaces.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/sealedInterfaces.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM_IR // WITH_STDLIB @@ -34,4 +33,4 @@ fun box(): String { desc.checkKind(1, "OPEN") desc.checkKind(2, "SEALED") return "OK" -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/codegen/Basic.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt similarity index 100% rename from plugins/kotlinx-serialization/testData/codegen/Basic.ir.txt rename to plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt diff --git a/plugins/kotlinx-serialization/testData/codegen/Basic.txt b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.txt similarity index 100% rename from plugins/kotlinx-serialization/testData/codegen/Basic.txt rename to plugins/kotlinx-serialization/testData/codegen/Basic.asm.txt diff --git a/plugins/kotlinx-serialization/testData/codegen/Basic.kt b/plugins/kotlinx-serialization/testData/codegen/Basic.kt index c9431352667..e531c465a06 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Basic.kt +++ b/plugins/kotlinx-serialization/testData/codegen/Basic.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT serialize, deserialize, write$Self, childSerializers, , , getDescriptor +// CURIOUS_ABOUT: serialize, deserialize, write$Self, childSerializers, , , getDescriptor // WITH_STDLIB import kotlinx.serialization.* @@ -10,4 +10,4 @@ class User(val firstName: String, val lastName: String) class OptionalUser(val user: User = User("", "")) @Serializable -class ListOfUsers(val list: List) \ No newline at end of file +class ListOfUsers(val list: List) diff --git a/plugins/kotlinx-serialization/testData/codegen/Delegated.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Delegated.asm.ir.txt similarity index 100% rename from plugins/kotlinx-serialization/testData/codegen/Delegated.ir.txt rename to plugins/kotlinx-serialization/testData/codegen/Delegated.asm.ir.txt diff --git a/plugins/kotlinx-serialization/testData/codegen/Delegated.txt b/plugins/kotlinx-serialization/testData/codegen/Delegated.asm.txt similarity index 100% rename from plugins/kotlinx-serialization/testData/codegen/Delegated.txt rename to plugins/kotlinx-serialization/testData/codegen/Delegated.asm.txt diff --git a/plugins/kotlinx-serialization/testData/codegen/Delegated.kt b/plugins/kotlinx-serialization/testData/codegen/Delegated.kt index 59b92011fc4..50e9a8a1e64 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Delegated.kt +++ b/plugins/kotlinx-serialization/testData/codegen/Delegated.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT , +// CURIOUS_ABOUT: , // WITH_STDLIB import kotlinx.serialization.* @@ -10,4 +10,4 @@ fun interface A { fun generateImpl() = A { "Hello, world!" } @Serializable -class Test : A by generateImpl() \ No newline at end of file +class Test : A by generateImpl() diff --git a/plugins/kotlinx-serialization/testData/codegen/Sealed.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt similarity index 100% rename from plugins/kotlinx-serialization/testData/codegen/Sealed.ir.txt rename to plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt diff --git a/plugins/kotlinx-serialization/testData/codegen/Sealed.txt b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.txt similarity index 100% rename from plugins/kotlinx-serialization/testData/codegen/Sealed.txt rename to plugins/kotlinx-serialization/testData/codegen/Sealed.asm.txt diff --git a/plugins/kotlinx-serialization/testData/codegen/Sealed.kt b/plugins/kotlinx-serialization/testData/codegen/Sealed.kt index a4bda762b51..d67a97da7ea 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Sealed.kt +++ b/plugins/kotlinx-serialization/testData/codegen/Sealed.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT deserialize, write$Self, childSerializers, , , invoke, serializer +// CURIOUS_ABOUT: deserialize, write$Self, childSerializers, , , invoke, serializer // WITH_STDLIB import kotlinx.serialization.* @@ -16,4 +16,4 @@ sealed class Result: X { } @Serializable -class Container(val r: Result) \ No newline at end of file +class Container(val r: Result) diff --git a/plugins/kotlinx-serialization/testData/diagnostics/LocalAndAnonymous.kt b/plugins/kotlinx-serialization/testData/diagnostics/LocalAndAnonymous.kt index 9f45dd9650a..6774edbfc8f 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/LocalAndAnonymous.kt +++ b/plugins/kotlinx-serialization/testData/diagnostics/LocalAndAnonymous.kt @@ -1,4 +1,4 @@ -// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE,-OPT_IN_USAGE_ERROR,-OPT_IN_USAGE +// !DIAGNOSTICS: -OPT_IN_USAGE_ERROR, -OPT_IN_USAGE // WITH_STDLIB // SKIP_TXT diff --git a/plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.kt b/plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.kt index 6aa6e3f7409..f35c86bd684 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.kt +++ b/plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.kt @@ -1,4 +1,3 @@ -// !DIAGNOSTICS: -UNUSED_PARAMETER,-UNUSED_VARIABLE // WITH_STDLIB // FILE: test.kt import kotlinx.serialization.* @@ -15,4 +14,4 @@ class NopeNullableSerializer: KSerializer { } @Serializable -class Foo(val foo: Nope) \ No newline at end of file +class Foo(val foo: Nope) diff --git a/plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.kt b/plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.kt index e3317e5579e..4f04b083778 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.kt +++ b/plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.kt @@ -48,4 +48,4 @@ fun testKinds(): String { fun box(): String { return testData(testKinds()) -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.kt b/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.kt index d50e3f5b568..635d7927592 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.kt +++ b/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.kt @@ -20,4 +20,4 @@ fun box(): String { val decoded = Json.decodeFromString(serial, s) if (box.t != decoded.t || box.vs != decoded.vs) return "Incorrect deserialization" return "OK" -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/firMembers/defaultProperties.kt b/plugins/kotlinx-serialization/testData/firMembers/defaultProperties.kt index 7ebd202736c..70e79aa1b4b 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/defaultProperties.kt +++ b/plugins/kotlinx-serialization/testData/firMembers/defaultProperties.kt @@ -25,4 +25,4 @@ fun test(targetString: String): String { fun box(): String { return test("""{"ctor":1,"ctorDependent":2,"body":"x","bodyDependent":3}""") -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/firMembers/enums.kt b/plugins/kotlinx-serialization/testData/firMembers/enums.kt index 3c23679fd2b..d3429676314 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/enums.kt +++ b/plugins/kotlinx-serialization/testData/firMembers/enums.kt @@ -42,4 +42,4 @@ fun testSerialization(previous: String): String { fun box(): String { return testSerialization(testSerializers()) -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/firMembers/inlineClasses.kt b/plugins/kotlinx-serialization/testData/firMembers/inlineClasses.kt index 85e44e76518..ef5c5b41a19 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/inlineClasses.kt +++ b/plugins/kotlinx-serialization/testData/firMembers/inlineClasses.kt @@ -16,4 +16,4 @@ fun box(): String { val s = Json.encodeToString(Holder.serializer(), Holder(Foo(42))) if (s != """{"f":42}""") return s return "OK" -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/firMembers/multipleProperties.kt b/plugins/kotlinx-serialization/testData/firMembers/multipleProperties.kt index 765b94af5a5..6fd4e4bfe3d 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/multipleProperties.kt +++ b/plugins/kotlinx-serialization/testData/firMembers/multipleProperties.kt @@ -23,4 +23,4 @@ fun test(targetString: String): String { fun box(): String { return test("""{"ctor":1,"body":"x"}""") -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.kt b/plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.kt index 2a53b853283..3a5b1492485 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.kt +++ b/plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.kt @@ -34,4 +34,4 @@ fun test(targetString: String): String { fun box(): String { return test("""{"ctor":42,"body":"42"}""") -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/testData/firMembers/serializableObject.kt b/plugins/kotlinx-serialization/testData/firMembers/serializableObject.kt index 4775f7f0b01..a6250b0991b 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/serializableObject.kt +++ b/plugins/kotlinx-serialization/testData/firMembers/serializableObject.kt @@ -12,4 +12,4 @@ fun box(): String { val decoded = Json.decodeFromString(FooBar.serializer(), encoded) if (decoded !== FooBar) return "Incorrect object instance" return "OK" -} \ No newline at end of file +} diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationFirBlackBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationFirBlackBoxTestGenerated.java deleted file mode 100644 index 361a5cc0a20..00000000000 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationFirBlackBoxTestGenerated.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2010-2022 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.kotlinx.serialization; - -import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.util.KtTestUtil; -import org.jetbrains.kotlin.test.TargetBackend; -import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import java.io.File; -import java.util.regex.Pattern; - -/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ -@SuppressWarnings("all") -@TestMetadata("plugins/kotlinx-serialization/testData/firMembers") -@TestDataPath("$PROJECT_ROOT") -public class SerializationFirBlackBoxTestGenerated extends AbstractSerializationFirBlackBoxTest { - @Test - @TestMetadata("abstractAndSealed.kt") - public void testAbstractAndSealed() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.kt"); - } - - @Test - public void testAllFilesPresentInFirMembers() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/firMembers"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); - } - - @Test - @TestMetadata("classWithCompanionObject.kt") - public void testClassWithCompanionObject() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/classWithCompanionObject.kt"); - } - - @Test - @TestMetadata("classWithGenericParameters.kt") - public void testClassWithGenericParameters() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.kt"); - } - - @Test - @TestMetadata("defaultProperties.kt") - public void testDefaultProperties() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/defaultProperties.kt"); - } - - @Test - @TestMetadata("enums.kt") - public void testEnums() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/enums.kt"); - } - - @Test - @TestMetadata("inlineClasses.kt") - public void testInlineClasses() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/inlineClasses.kt"); - } - - @Test - @TestMetadata("multipleProperties.kt") - public void testMultipleProperties() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/multipleProperties.kt"); - } - - @Test - @TestMetadata("privatePropertiesSerialization.kt") - public void testPrivatePropertiesSerialization() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.kt"); - } - - @Test - @TestMetadata("serializableObject.kt") - public void testSerializableObject() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/serializableObject.kt"); - } -} diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationFirMembersTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationFirMembersTestGenerated.java deleted file mode 100644 index 9a23ac43d40..00000000000 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationFirMembersTestGenerated.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2010-2022 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.kotlinx.serialization; - -import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.util.KtTestUtil; -import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import java.io.File; -import java.util.regex.Pattern; - -/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ -@SuppressWarnings("all") -@TestMetadata("plugins/kotlinx-serialization/testData/firMembers") -@TestDataPath("$PROJECT_ROOT") -public class SerializationFirMembersTestGenerated extends AbstractSerializationFirMembersTest { - @Test - @TestMetadata("abstractAndSealed.kt") - public void testAbstractAndSealed() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.kt"); - } - - @Test - public void testAllFilesPresentInFirMembers() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/firMembers"), Pattern.compile("^(.+)\\.kt$"), null, true); - } - - @Test - @TestMetadata("classWithCompanionObject.kt") - public void testClassWithCompanionObject() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/classWithCompanionObject.kt"); - } - - @Test - @TestMetadata("classWithGenericParameters.kt") - public void testClassWithGenericParameters() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.kt"); - } - - @Test - @TestMetadata("defaultProperties.kt") - public void testDefaultProperties() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/defaultProperties.kt"); - } - - @Test - @TestMetadata("enums.kt") - public void testEnums() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/enums.kt"); - } - - @Test - @TestMetadata("inlineClasses.kt") - public void testInlineClasses() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/inlineClasses.kt"); - } - - @Test - @TestMetadata("multipleProperties.kt") - public void testMultipleProperties() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/multipleProperties.kt"); - } - - @Test - @TestMetadata("privatePropertiesSerialization.kt") - public void testPrivatePropertiesSerialization() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.kt"); - } - - @Test - @TestMetadata("serializableObject.kt") - public void testSerializableObject() throws Exception { - runTest("plugins/kotlinx-serialization/testData/firMembers/serializableObject.kt"); - } -} diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationIrBytecodeListingTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationAsmLikeInstructionsListingTestGenerated.java similarity index 65% rename from plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationIrBytecodeListingTestGenerated.java rename to plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationAsmLikeInstructionsListingTestGenerated.java index 3d4b0d4dcf0..b4c11bd07b6 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationIrBytecodeListingTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationAsmLikeInstructionsListingTestGenerated.java @@ -3,42 +3,41 @@ * 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.kotlinx.serialization; +package org.jetbrains.kotlinx.serialization.runners; import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; -import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; import java.io.File; import java.util.regex.Pattern; -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") @TestMetadata("plugins/kotlinx-serialization/testData/codegen") @TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) -public class SerializationIrBytecodeListingTestGenerated extends AbstractSerializationIrBytecodeListingTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); - } - +public class SerializationAsmLikeInstructionsListingTestGenerated extends AbstractSerializationAsmLikeInstructionsListingTest { + @Test public void testAllFilesPresentInCodegen() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, true); + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + @Test @TestMetadata("Basic.kt") public void testBasic() throws Exception { runTest("plugins/kotlinx-serialization/testData/codegen/Basic.kt"); } + @Test @TestMetadata("Delegated.kt") public void testDelegated() throws Exception { runTest("plugins/kotlinx-serialization/testData/codegen/Delegated.kt"); } + @Test @TestMetadata("Sealed.kt") public void testSealed() throws Exception { runTest("plugins/kotlinx-serialization/testData/codegen/Sealed.kt"); diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirBlackBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirBlackBoxTestGenerated.java new file mode 100644 index 00000000000..380b58f92b7 --- /dev/null +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirBlackBoxTestGenerated.java @@ -0,0 +1,142 @@ +/* + * Copyright 2010-2022 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.kotlinx.serialization.runners; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +public class SerializationFirBlackBoxTestGenerated extends AbstractSerializationFirBlackBoxTest { + @Nested + @TestMetadata("plugins/kotlinx-serialization/testData/boxIr") + @TestDataPath("$PROJECT_ROOT") + public class BoxIr { + @Test + public void testAllFilesPresentInBoxIr() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/boxIr"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("annotationsOnFile.kt") + public void testAnnotationsOnFile() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/annotationsOnFile.kt"); + } + + @Test + @TestMetadata("classSerializerAsObject.kt") + public void testClassSerializerAsObject() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/classSerializerAsObject.kt"); + } + + @Test + @TestMetadata("enumsAreCached.kt") + public void testEnumsAreCached() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/enumsAreCached.kt"); + } + + @Test + @TestMetadata("generics.kt") + public void testGenerics() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/generics.kt"); + } + + @Test + @TestMetadata("inlineClasses.kt") + public void testInlineClasses() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/inlineClasses.kt"); + } + + @Test + @TestMetadata("metaSerializable.kt") + public void testMetaSerializable() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/metaSerializable.kt"); + } + + @Test + @TestMetadata("multimoduleInheritance.kt") + public void testMultimoduleInheritance() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/multimoduleInheritance.kt"); + } + + @Test + @TestMetadata("sealedInterfaces.kt") + public void testSealedInterfaces() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/sealedInterfaces.kt"); + } + } + + @Nested + @TestMetadata("plugins/kotlinx-serialization/testData/firMembers") + @TestDataPath("$PROJECT_ROOT") + public class FirMembers { + @Test + @TestMetadata("abstractAndSealed.kt") + public void testAbstractAndSealed() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.kt"); + } + + @Test + public void testAllFilesPresentInFirMembers() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/firMembers"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("classWithCompanionObject.kt") + public void testClassWithCompanionObject() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/classWithCompanionObject.kt"); + } + + @Test + @TestMetadata("classWithGenericParameters.kt") + public void testClassWithGenericParameters() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.kt"); + } + + @Test + @TestMetadata("defaultProperties.kt") + public void testDefaultProperties() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/defaultProperties.kt"); + } + + @Test + @TestMetadata("enums.kt") + public void testEnums() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/enums.kt"); + } + + @Test + @TestMetadata("inlineClasses.kt") + public void testInlineClasses() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/inlineClasses.kt"); + } + + @Test + @TestMetadata("multipleProperties.kt") + public void testMultipleProperties() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/multipleProperties.kt"); + } + + @Test + @TestMetadata("privatePropertiesSerialization.kt") + public void testPrivatePropertiesSerialization() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.kt"); + } + + @Test + @TestMetadata("serializableObject.kt") + public void testSerializableObject() throws Exception { + runTest("plugins/kotlinx-serialization/testData/firMembers/serializableObject.kt"); + } + } +} diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationPluginBytecodeListingTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrAsmLikeInstructionsListingTestGenerated.java similarity index 64% rename from plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationPluginBytecodeListingTestGenerated.java rename to plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrAsmLikeInstructionsListingTestGenerated.java index 3b81a1c6d4e..4d72b68ec87 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationPluginBytecodeListingTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrAsmLikeInstructionsListingTestGenerated.java @@ -3,42 +3,41 @@ * 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.kotlinx.serialization; +package org.jetbrains.kotlinx.serialization.runners; import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; -import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; import java.io.File; import java.util.regex.Pattern; -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") @TestMetadata("plugins/kotlinx-serialization/testData/codegen") @TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) -public class SerializationPluginBytecodeListingTestGenerated extends AbstractSerializationPluginBytecodeListingTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); - } - +public class SerializationIrAsmLikeInstructionsListingTestGenerated extends AbstractSerializationIrAsmLikeInstructionsListingTest { + @Test public void testAllFilesPresentInCodegen() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, true); + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test @TestMetadata("Basic.kt") public void testBasic() throws Exception { runTest("plugins/kotlinx-serialization/testData/codegen/Basic.kt"); } + @Test @TestMetadata("Delegated.kt") public void testDelegated() throws Exception { runTest("plugins/kotlinx-serialization/testData/codegen/Delegated.kt"); } + @Test @TestMetadata("Sealed.kt") public void testSealed() throws Exception { runTest("plugins/kotlinx-serialization/testData/codegen/Sealed.kt"); diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationIrBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java similarity index 98% rename from plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationIrBoxTestGenerated.java rename to plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java index afd1890775a..61d6a83cb0d 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationIrBoxTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java @@ -3,7 +3,7 @@ * 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.kotlinx.serialization; +package org.jetbrains.kotlinx.serialization.runners; import com.intellij.testFramework.TestDataPath; import org.jetbrains.kotlin.test.util.KtTestUtil; diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationPluginDiagnosticTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationPluginDiagnosticTestGenerated.java similarity index 88% rename from plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationPluginDiagnosticTestGenerated.java rename to plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationPluginDiagnosticTestGenerated.java index 0ac94fe1227..df09dfb777d 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationPluginDiagnosticTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationPluginDiagnosticTestGenerated.java @@ -3,112 +3,124 @@ * 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.kotlinx.serialization; +package org.jetbrains.kotlinx.serialization.runners; import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; -import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.util.KtTestUtil; import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; import java.io.File; import java.util.regex.Pattern; -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") @TestMetadata("plugins/kotlinx-serialization/testData/diagnostics") @TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) public class SerializationPluginDiagnosticTestGenerated extends AbstractSerializationPluginDiagnosticTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); - } - + @Test public void testAllFilesPresentInDiagnostics() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), null, true); + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); } + @Test @TestMetadata("DuplicateSerialName.kt") public void testDuplicateSerialName() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/DuplicateSerialName.kt"); } + @Test @TestMetadata("EnumDuplicateSerialName.kt") public void testEnumDuplicateSerialName() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/EnumDuplicateSerialName.kt"); } + @Test @TestMetadata("ExternalSerializers.kt") public void testExternalSerializers() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/ExternalSerializers.kt"); } + @Test @TestMetadata("IncorrectTransient.kt") public void testIncorrectTransient() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/IncorrectTransient.kt"); } + @Test @TestMetadata("IncorrectTransient2.kt") public void testIncorrectTransient2() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/IncorrectTransient2.kt"); } + @Test @TestMetadata("InheritableInfo.kt") public void testInheritableInfo() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/InheritableInfo.kt"); } + @Test @TestMetadata("LazyRecursionBug.kt") public void testLazyRecursionBug() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/LazyRecursionBug.kt"); } + @Test @TestMetadata("LocalAndAnonymous.kt") public void testLocalAndAnonymous() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/LocalAndAnonymous.kt"); } + @Test @TestMetadata("NoSuitableCtorInParent.kt") public void testNoSuitableCtorInParent() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/NoSuitableCtorInParent.kt"); } + @Test @TestMetadata("NonSerializable.kt") public void testNonSerializable() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/NonSerializable.kt"); } + @Test @TestMetadata("NullabilityIncompatible.kt") public void testNullabilityIncompatible() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.kt"); } + @Test @TestMetadata("ParamIsNotProperty.kt") public void testParamIsNotProperty() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/ParamIsNotProperty.kt"); } + @Test @TestMetadata("SerializableEnums.kt") public void testSerializableEnums() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/SerializableEnums.kt"); } + @Test @TestMetadata("SerializableIgnored.kt") public void testSerializableIgnored() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/SerializableIgnored.kt"); } + @Test @TestMetadata("SerializerTypeCompatibleForSpecials.kt") public void testSerializerTypeCompatibleForSpecials() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/SerializerTypeCompatibleForSpecials.kt"); } + @Test @TestMetadata("SerializerTypeIncompatible.kt") public void testSerializerTypeIncompatible() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/SerializerTypeIncompatible.kt"); } + @Test @TestMetadata("Transients.kt") public void testTransients() throws Exception { runTest("plugins/kotlinx-serialization/testData/diagnostics/Transients.kt"); diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationWithoutRuntimeIrBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationWithoutRuntimeIrBoxTestGenerated.java similarity index 96% rename from plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationWithoutRuntimeIrBoxTestGenerated.java rename to plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationWithoutRuntimeIrBoxTestGenerated.java index 6123e1f943d..8d5e0889b41 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/SerializationWithoutRuntimeIrBoxTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationWithoutRuntimeIrBoxTestGenerated.java @@ -3,7 +3,7 @@ * 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.kotlinx.serialization; +package org.jetbrains.kotlinx.serialization.runners; import com.intellij.testFramework.TestDataPath; import org.jetbrains.kotlin.test.util.KtTestUtil; diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationFirMembersTest.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationFirMembersTest.kt deleted file mode 100644 index f6951e5d27c..00000000000 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationFirMembersTest.kt +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2010-2022 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.kotlinx.serialization - -import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter -import org.jetbrains.kotlin.test.TargetBackend -import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor -import org.jetbrains.kotlin.test.backend.handlers.IrTextDumpHandler -import org.jetbrains.kotlin.test.backend.handlers.IrTreeVerifierHandler -import org.jetbrains.kotlin.test.backend.handlers.JvmBoxRunner -import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade -import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder -import org.jetbrains.kotlin.test.builders.fir2IrStep -import org.jetbrains.kotlin.test.builders.irHandlersStep -import org.jetbrains.kotlin.test.builders.jvmArtifactsHandlersStep -import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives -import org.jetbrains.kotlin.test.model.TestModule -import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest -import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest -import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration -import org.jetbrains.kotlin.test.services.RuntimeClasspathProvider -import org.jetbrains.kotlinx.serialization.compiler.fir.FirSerializationExtensionRegistrar -import java.io.File - -abstract class AbstractSerializationFirMembersTest: AbstractKotlinCompilerTest() { - private val librariesList = listOf(getSerializationCoreLibraryJar()!!, getSerializationLibraryJar("kotlinx.serialization.json.Json")!!) - - override fun TestConfigurationBuilder.configuration() { - baseFirDiagnosticTestConfiguration() - - defaultDirectives { - +FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES - +FirDiagnosticsDirectives.FIR_DUMP - } - - configureForKotlinxSerialization(librariesList) { - FirExtensionRegistrarAdapter.registerExtension(FirSerializationExtensionRegistrar()) - } - } -} - -open class AbstractSerializationFirBlackBoxTest : AbstractKotlinCompilerWithTargetBackendTest(TargetBackend.JVM_IR) { - - private val librariesList = listOf(getSerializationCoreLibraryJar()!!, getSerializationLibraryJar("kotlinx.serialization.json.Json")!!) - - override fun TestConfigurationBuilder.configuration() { - baseFirDiagnosticTestConfiguration() - configureForKotlinxSerialization(librariesList) { - FirExtensionRegistrarAdapter.registerExtension(FirSerializationExtensionRegistrar()) - } - useCustomRuntimeClasspathProviders({ ts -> - object : RuntimeClasspathProvider(ts) { - override fun runtimeClassPaths(module: TestModule): List { - return librariesList - } - } - }) - defaultDirectives { - +FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES - } - - fir2IrStep() - irHandlersStep { - useHandlers( - ::IrTextDumpHandler, - ::IrTreeVerifierHandler, - ) - } - facadeStep(::JvmIrBackendFacade) - jvmArtifactsHandlersStep { - useHandlers(::JvmBoxRunner) - } - - useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor) - } -} diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBoxTest.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBoxTest.kt deleted file mode 100644 index 95098e88725..00000000000 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBoxTest.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2010-2021 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.kotlinx.serialization - -import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder -import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest - -open class AbstractSerializationIrBoxTest : AbstractIrBlackBoxCodegenTest() { - private val coreLibraryPath = getSerializationCoreLibraryJar() - private val jsonLibraryPath = getSerializationLibraryJar("kotlinx.serialization.json.Json") - - override fun configure(builder: TestConfigurationBuilder) { - super.configure(builder) - val librariesPaths = listOf(coreLibraryPath!!, jsonLibraryPath!!) - builder.configureForKotlinxSerialization(librariesPaths) - } - -} \ No newline at end of file diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBytecodeListingTest.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBytecodeListingTest.kt deleted file mode 100644 index 2dddd4d0141..00000000000 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBytecodeListingTest.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2010-2019 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.kotlinx.serialization - -import org.jetbrains.kotlin.ObsoleteTestInfrastructure -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot -import org.jetbrains.kotlin.codegen.AbstractAsmLikeInstructionListingTest -import org.jetbrains.kotlin.compiler.plugin.registerExtensionsForTest -import org.jetbrains.kotlin.test.TargetBackend -import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar -import java.io.File - -@OptIn(ObsoleteTestInfrastructure::class) -abstract class AbstractSerializationIrBytecodeListingTest : AbstractAsmLikeInstructionListingTest() { - private val coreLibraryPath = getSerializationCoreLibraryJar() - - override fun getExpectedTextFileName(wholeFile: File): String { - return wholeFile.nameWithoutExtension + ".ir.txt" - } - - override val backend = TargetBackend.JVM_IR - - override fun setupEnvironment(environment: KotlinCoreEnvironment) { - registerExtensionsForTest(environment.project, environment.configuration) { - SerializationComponentRegistrar.registerExtensions(this) - } - environment.updateClasspath(listOf(JvmClasspathRoot(coreLibraryPath!!))) - } -} diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginBytecodeListingTest.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginBytecodeListingTest.kt deleted file mode 100644 index 67ec4a8faf9..00000000000 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginBytecodeListingTest.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2019 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.kotlinx.serialization - -import org.jetbrains.kotlin.ObsoleteTestInfrastructure -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot -import org.jetbrains.kotlin.codegen.AbstractAsmLikeInstructionListingTest -import org.jetbrains.kotlin.compiler.plugin.registerExtensionsForTest -import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar - -@OptIn(ObsoleteTestInfrastructure::class) -abstract class AbstractSerializationPluginBytecodeListingTest : AbstractAsmLikeInstructionListingTest() { - private val coreLibraryPath = getSerializationCoreLibraryJar() - - override fun setupEnvironment(environment: KotlinCoreEnvironment) { - registerExtensionsForTest(environment.project, environment.configuration) { - SerializationComponentRegistrar.registerExtensions(this) - } - environment.updateClasspath(listOf(JvmClasspathRoot(coreLibraryPath!!))) - } -} diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginDiagnosticTest.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginDiagnosticTest.kt deleted file mode 100644 index eac3fa64027..00000000000 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginDiagnosticTest.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2019 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.kotlinx.serialization - -import org.jetbrains.kotlin.ObsoleteTestInfrastructure -import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot -import org.jetbrains.kotlin.compiler.plugin.registerExtensionsForTest -import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar - -@OptIn(ObsoleteTestInfrastructure::class) -abstract class AbstractSerializationPluginDiagnosticTest : AbstractDiagnosticsTest() { - private val coreLibraryPath = getSerializationCoreLibraryJar() - - override fun setupEnvironment(environment: KotlinCoreEnvironment) { - registerExtensionsForTest(environment.project, environment.configuration) { - SerializationComponentRegistrar.registerExtensions(this) - } - environment.updateClasspath(listOf(JvmClasspathRoot(coreLibraryPath!!))) - } -} diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationWithoutRuntimeIrBoxTest.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationWithoutRuntimeIrBoxTest.kt deleted file mode 100644 index 688c3e974f5..00000000000 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/AbstractSerializationWithoutRuntimeIrBoxTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2010-2021 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.kotlinx.serialization - -import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder -import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest - -open class AbstractSerializationWithoutRuntimeIrBoxTest : AbstractIrBlackBoxCodegenTest() { - override fun configure(builder: TestConfigurationBuilder) { - super.configure(builder) - builder.configureForKotlinxSerialization(emptyList()) - } - -} \ No newline at end of file diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt index 779308f3eab..aebe2230af4 100644 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt +++ b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt @@ -5,29 +5,30 @@ package org.jetbrains.kotlinx.serialization -import junit.framework.TestCase -import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots -import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar.ExtensionStorage -import org.jetbrains.kotlin.config.CompilerConfiguration -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.RuntimeClasspathProvider import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlinx.serialization.compiler.diagnostic.VersionReader -import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar -import org.junit.Test +import org.junit.jupiter.api.Assertions.assertNotNull +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Test import java.io.File -import kotlin.test.assertTrue class RuntimeLibraryInClasspathTest { - private val coreLibraryPath = getSerializationCoreLibraryJar() + companion object { + val coreLibraryPath = getSerializationLibraryJar("kotlinx.serialization.KSerializer") + val jsonLibraryPath = getSerializationLibraryJar("kotlinx.serialization.json.Json") + + private fun getSerializationLibraryJar(classToDetect: String): File? = try { + PathUtil.getResourcePathForClass(Class.forName(classToDetect)) + } catch (e: ClassNotFoundException) { + null + } + } @Test fun testRuntimeLibraryExists() { - TestCase.assertNotNull( + assertNotNull( + coreLibraryPath, "kotlinx-serialization runtime library is not found. Make sure it is present in test classpath", - coreLibraryPath ) } @@ -38,38 +39,3 @@ class RuntimeLibraryInClasspathTest { assertTrue(version.implementationVersionMatchSupported(), "Runtime version too low") } } - -internal fun getSerializationCoreLibraryJar(): File? = getSerializationLibraryJar("kotlinx.serialization.KSerializer") - -internal fun getSerializationLibraryJar(classToDetect: String): File? = try { - PathUtil.getResourcePathForClass(Class.forName(classToDetect)) -} catch (e: ClassNotFoundException) { - null -} - -internal fun TestConfigurationBuilder.configureForKotlinxSerialization(librariesPaths: List, registerAdditionalExtensions: ExtensionStorage.() -> Unit = {}) { - useConfigurators( - { services -> - object : EnvironmentConfigurator(services) { - override fun configureCompilerConfiguration( - configuration: CompilerConfiguration, - module: TestModule - ) { - configuration.addJvmClasspathRoots(librariesPaths) - } - - override fun ExtensionStorage.registerCompilerExtensions(module: TestModule, configuration: CompilerConfiguration) { - SerializationComponentRegistrar.registerExtensions(this) - registerAdditionalExtensions() - } - } - }) - - useCustomRuntimeClasspathProviders( - { - object : RuntimeClasspathProvider(it) { - override fun runtimeClassPaths(module: TestModule): List = librariesPaths - } - } - ) -} diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/TestGenerator.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/TestGenerator.kt index 91d03e8ccef..b288af30260 100644 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/TestGenerator.kt +++ b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/TestGenerator.kt @@ -6,52 +6,47 @@ package org.jetbrains.kotlinx.serialization import org.jetbrains.kotlin.generators.generateTestGroupSuiteWithJUnit5 -import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite +import org.jetbrains.kotlinx.serialization.runners.* fun main(args: Array) { System.setProperty("java.awt.headless", "true") - generateTestGroupSuite { - testGroup( - "plugins/kotlinx-serialization/tests-gen", - "plugins/kotlinx-serialization/testData" - ) { - testClass { - model("diagnostics") - } - - testClass { - model("codegen") - } - - testClass { - model("codegen") - } - } - } + val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$" generateTestGroupSuiteWithJUnit5(args) { testGroup( "plugins/kotlinx-serialization/tests-gen", "plugins/kotlinx-serialization/testData" ) { + // ------------------------------- diagnostics ------------------------------- + testClass() { + model("diagnostics", excludedPattern = excludedFirTestdataPattern) + } + + // ------------------------------- asm instructions ------------------------------- + + testClass { + model("codegen") + } + + testClass { + model("codegen") + } + + // ------------------------------- box ------------------------------- - // New test infrastructure ONLY testClass { model("boxIr") } + testClass { + model("boxIr") + model("firMembers") + } + testClass { model("boxWithoutRuntime") } - - testClass { - model("firMembers") - } - - testClass { - model("firMembers") - } } } } diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/AsmLikeInstructionsListingTests.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/AsmLikeInstructionsListingTests.kt new file mode 100644 index 00000000000..109514e32e0 --- /dev/null +++ b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/AsmLikeInstructionsListingTests.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2010-2022 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.kotlinx.serialization.runners + +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.directives.AsmLikeInstructionListingDirectives +import org.jetbrains.kotlin.test.runners.codegen.AbstractAsmLikeInstructionListingTest +import org.jetbrains.kotlin.test.runners.codegen.AbstractIrAsmLikeInstructionListingTest +import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization + +open class AbstractSerializationAsmLikeInstructionsListingTest : AbstractAsmLikeInstructionListingTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.enableDifference() + builder.configureForKotlinxSerialization() + } +} + +open class AbstractSerializationIrAsmLikeInstructionsListingTest : AbstractIrAsmLikeInstructionListingTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.enableDifference() + builder.configureForKotlinxSerialization() + } +} + +private fun TestConfigurationBuilder.enableDifference() { + defaultDirectives { + +AsmLikeInstructionListingDirectives.IR_DIFFERENCE + } +} diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/BoxTests.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/BoxTests.kt new file mode 100644 index 00000000000..24c359b84b1 --- /dev/null +++ b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/BoxTests.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2010-2022 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.kotlinx.serialization.runners + +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP +import org.jetbrains.kotlin.test.runners.codegen.AbstractFirBlackBoxCodegenTest +import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest +import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization + +open class AbstractSerializationIrBoxTest : AbstractIrBlackBoxCodegenTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configureForKotlinxSerialization() + } +} + +open class AbstractSerializationWithoutRuntimeIrBoxTest : AbstractIrBlackBoxCodegenTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configureForKotlinxSerialization(noLibraries = true) + } +} + +open class AbstractSerializationFirBlackBoxTest : AbstractFirBlackBoxCodegenTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configureForKotlinxSerialization() + } +} diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/DiagnosticTests.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/DiagnosticTests.kt new file mode 100644 index 00000000000..613d89b42fa --- /dev/null +++ b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/DiagnosticTests.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2022 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.kotlinx.serialization.runners + +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest +import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization + +abstract class AbstractSerializationPluginDiagnosticTest : AbstractDiagnosticTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configureForKotlinxSerialization() + } +} diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/serializationConfiguration.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/serializationConfiguration.kt new file mode 100644 index 00000000000..2416672fd29 --- /dev/null +++ b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/serializationConfiguration.kt @@ -0,0 +1,53 @@ +/* + * Copyright 2010-2022 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.kotlinx.serialization + +import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots +import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar +import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter +import org.jetbrains.kotlin.test.bind +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.RuntimeClasspathProvider +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar +import org.jetbrains.kotlinx.serialization.compiler.fir.FirSerializationExtensionRegistrar +import java.io.File + +private val librariesPaths = listOfNotNull(RuntimeLibraryInClasspathTest.coreLibraryPath, RuntimeLibraryInClasspathTest.jsonLibraryPath) + +class SerializationEnvironmentConfigurator( + testServices: TestServices, + private val noLibraries: Boolean +) : EnvironmentConfigurator(testServices) { + override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) { + if (noLibraries) return + configuration.addJvmClasspathRoots(librariesPaths) + } + + override fun CompilerPluginRegistrar.ExtensionStorage.registerCompilerExtensions( + module: TestModule, + configuration: CompilerConfiguration + ) { + SerializationComponentRegistrar.registerExtensions(this) + FirExtensionRegistrarAdapter.registerExtension(FirSerializationExtensionRegistrar()) + } +} + +class SerializationRuntimeClasspathProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) { + override fun runtimeClassPaths(module: TestModule): List { + return librariesPaths + } +} + +fun TestConfigurationBuilder.configureForKotlinxSerialization(noLibraries: Boolean = false) { + useConfigurators(::SerializationEnvironmentConfigurator.bind(noLibraries)) + if (!noLibraries) { + useCustomRuntimeClasspathProviders(::SerializationRuntimeClasspathProvider) + } +}