diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index f8377a2b2de..f72e14f28d2 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -28,13 +28,14 @@ import org.jetbrains.kotlin.kapt3.test.AbstractIrKotlinKaptContextTest import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest import org.jetbrains.kotlin.lombok.AbstractLombokCompileTest import org.jetbrains.kotlin.noarg.* -import org.jetbrains.kotlin.parcelize.test.AbstractParcelizeBoxTest -import org.jetbrains.kotlin.parcelize.test.AbstractParcelizeBytecodeListingTest -import org.jetbrains.kotlin.parcelize.test.AbstractParcelizeIrBoxTest -import org.jetbrains.kotlin.parcelize.test.AbstractParcelizeIrBytecodeListingTest +import org.jetbrains.kotlin.parcelize.test.runners.AbstractParcelizeBoxTest +import org.jetbrains.kotlin.parcelize.test.runners.AbstractParcelizeBytecodeListingTest +import org.jetbrains.kotlin.parcelize.test.runners.AbstractParcelizeIrBoxTest +import org.jetbrains.kotlin.parcelize.test.runners.AbstractParcelizeIrBytecodeListingTest import org.jetbrains.kotlin.samWithReceiver.AbstractSamWithReceiverScriptTest import org.jetbrains.kotlin.samWithReceiver.AbstractSamWithReceiverTest import org.jetbrains.kotlin.test.TargetBackend +import org.jetbrains.kotlin.test.generators.generateTestGroupSuiteWithJUnit5 import org.jetbrains.kotlinx.serialization.AbstractSerializationIrBytecodeListingTest import org.jetbrains.kotlinx.serialization.AbstractSerializationPluginBytecodeListingTest import org.jetbrains.kotlinx.serialization.AbstractSerializationPluginDiagnosticTest @@ -147,24 +148,6 @@ fun main(args: Array) { } } - testGroup("plugins/parcelize/parcelize-compiler/tests-gen", "plugins/parcelize/parcelize-compiler/testData") { - testClass { - model("box", targetBackend = TargetBackend.JVM) - } - - testClass { - model("box", targetBackend = TargetBackend.JVM_IR) - } - - testClass { - model("codegen", targetBackend = TargetBackend.JVM) - } - - testClass { - model("codegen", targetBackend = TargetBackend.JVM_IR) - } - } - testGroup("plugins/jvm-abi-gen/test", "plugins/jvm-abi-gen/testData") { testClass { model("compare", recursive = false, extension = null, targetBackend = TargetBackend.JVM) @@ -372,4 +355,24 @@ fun main(args: Array) { } */ } + + generateTestGroupSuiteWithJUnit5 { + testGroup("plugins/parcelize/parcelize-compiler/tests-gen", "plugins/parcelize/parcelize-compiler/testData") { + testClass { + model("box") + } + + testClass { + model("box") + } + + testClass { + model("codegen") + } + + testClass { + model("codegen") + } + } + } } diff --git a/plugins/parcelize/parcelize-compiler/build.gradle.kts b/plugins/parcelize/parcelize-compiler/build.gradle.kts index 7c78b752636..99e264ca127 100644 --- a/plugins/parcelize/parcelize-compiler/build.gradle.kts +++ b/plugins/parcelize/parcelize-compiler/build.gradle.kts @@ -24,6 +24,8 @@ dependencies { compileOnly(intellijCoreDep()) { includeJars("intellij-core") } compileOnly(intellijDep()) { includeJars("asm-all", rootProject = rootProject) } + testApiJUnit5() + testApi(project(":compiler:util")) testApi(project(":compiler:backend")) testApi(project(":compiler:ir.backend.common")) @@ -31,8 +33,12 @@ dependencies { testApi(project(":compiler:cli")) testApi(project(":plugins:parcelize:parcelize-runtime")) testApi(project(":kotlin-android-extensions-runtime")) - testApi(projectTests(":compiler:tests-common")) testApi(project(":kotlin-test:kotlin-test-jvm")) + + testApi(projectTests(":compiler:tests-common-new")) + testApi(projectTests(":compiler:test-infrastructure")) + testApi(projectTests(":compiler:test-infrastructure-utils")) + testApi(commonDep("junit:junit")) testRuntimeOnly(intellijPluginDep("junit")) @@ -69,7 +75,8 @@ sourcesJar() testsJar() -projectTest { +projectTest(jUnit5Enabled = true) { + useJUnitPlatform() dependsOn(parcelizeRuntimeForTests) dependsOn(":dist") workingDir = rootDir @@ -84,4 +91,9 @@ projectTest { systemProperty("parcelizeRuntime.classpath", parcelizeRuntimeForTestsProvider.get()) systemProperty("robolectric.classpath", robolectricClasspathProvider.get()) } + doLast { + println(filter) + println(filter.excludePatterns) + println(filter.includePatterns) + } } diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.kt index 013980147b3..2dfa64240a2 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel +// CURIOUS_ABOUT: writeToParcel, createFromParcel // WITH_RUNTIME import kotlinx.parcelize.* @@ -14,4 +14,4 @@ class User( val binderArrayList: ArrayList // should be serialized using our strategy, not using Parcel.writeBinderList() // There is no readStrongInterface method in Parcel. // val intf: IInterface? -) : Parcelable \ No newline at end of file +) : Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.kt index 1bc50730755..cf49f52023e 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel +// CURIOUS_ABOUT: writeToParcel, createFromParcel // WITH_RUNTIME // Test to ensure that we are using the correct class loader diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.kt index 97d047ff626..94866043d74 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT describeContents +// CURIOUS_ABOUT: describeContents // WITH_RUNTIME import kotlinx.parcelize.* @@ -7,4 +7,4 @@ import android.os.Parcelable @Parcelize class User(val firstName: String, val lastName: String, val age: Int, val isProUser: Boolean) : Parcelable { override fun describeContents() = 100 -} \ No newline at end of file +} diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.kt index a6a985a2d6e..12574905794 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel, +// CURIOUS_ABOUT: writeToParcel, createFromParcel, // WITH_RUNTIME package test @@ -8,4 +8,4 @@ import android.os.* import android.accounts.Account @Parcelize -class Foo(val kp: Account): Parcelable \ No newline at end of file +class Foo(val kp: Account): Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.asm.txt similarity index 99% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.asm.txt index fef2d07b995..796d0727c88 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.txt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.asm.txt @@ -123,7 +123,7 @@ public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Cr public java.lang.Object createFromParcel(android.os.Parcel p0) { LABEL (L0) - LINENUMBER (9) + LINENUMBER (40) ALOAD (0) ALOAD (1) INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;) diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.kt index 93e532b726b..6c485bafa2f 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel, +// CURIOUS_ABOUT: writeToParcel, createFromParcel, // WITH_RUNTIME // FILE: KotlinParcelable.kt @@ -37,4 +37,4 @@ import android.os.* import k.* @Parcelize -class Foo(val kp: KotlinParcelable): Parcelable \ No newline at end of file +class Foo(val kp: KotlinParcelable): Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.kt index 7769e4afd49..b5e0c5a837d 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel, newArray +// CURIOUS_ABOUT: writeToParcel, createFromParcel, newArray // WITH_RUNTIME import kotlinx.parcelize.* @@ -16,4 +16,4 @@ class User(val firstName: String, val lastName: String, val age: Int) : Parcelab override fun create(parcel: Parcel) = User(parcel.readString(), parcel.readString(), parcel.readInt()) } -} \ No newline at end of file +} diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.kt index c00505fc486..6fa74e00c1f 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT newArray +// CURIOUS_ABOUT: newArray // WITH_RUNTIME import kotlinx.parcelize.* @@ -18,4 +18,4 @@ class User(val firstName: String, val lastName: String, val age: Int) : Parcelab override fun newArray(size: Int) = arrayOfNulls(size) as Array } -} \ No newline at end of file +} diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.kt index 4aad0269f52..8cea80d00ae 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT describeContents +// CURIOUS_ABOUT: describeContents // WITH_RUNTIME import kotlinx.parcelize.* @@ -9,4 +9,4 @@ abstract class AbstractUser : Parcelable { } @Parcelize -class User(val firstName: String, val lastName: String, val age: Int, val isProUser: Boolean) : AbstractUser() \ No newline at end of file +class User(val firstName: String, val lastName: String, val age: Int, val isProUser: Boolean) : AbstractUser() diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.kt index 20b0e4f6d7b..049f0c49e94 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT +// CURIOUS_ABOUT: // WITH_RUNTIME import kotlinx.parcelize.* @@ -11,4 +11,4 @@ class User(val firstName: String) : Parcelable { @JvmStatic private val test = StringBuilder() } -} \ No newline at end of file +} diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.kt index 7bac4738fa9..964444de560 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel, +// CURIOUS_ABOUT: writeToParcel, createFromParcel, // WITH_RUNTIME //FILE: test.kt package test diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/generics.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/generics.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/generics.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/generics.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/generics.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/generics.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/generics.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/generics.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/generics.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/generics.kt index 442bc934b1e..f756d01b0ea 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/generics.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/generics.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel +// CURIOUS_ABOUT: writeToParcel, createFromParcel // RENDER_ANNOTATIONS // WITH_RUNTIME diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.kt index 6e632542061..7bf9149386a 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel +// CURIOUS_ABOUT: writeToParcel, createFromParcel // WITH_RUNTIME package test @@ -7,4 +7,4 @@ import kotlinx.parcelize.* import android.os.Parcelable @Parcelize -class SomeClass : Parcelable \ No newline at end of file +class SomeClass : Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.kt index 248b4b23a4b..5ce6d595167 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.kt @@ -1,8 +1,8 @@ -// CURIOUS_ABOUT writeToParcel +// CURIOUS_ABOUT: writeToParcel // WITH_RUNTIME import kotlinx.parcelize.* import android.os.Parcelable @Parcelize -class Test(val names: List>>): Parcelable \ No newline at end of file +class Test(val names: List>>): Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.kt index 6f5419ee8eb..0413914e10e 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel +// CURIOUS_ABOUT: writeToParcel // WITH_RUNTIME import android.util.Size @@ -9,4 +9,4 @@ import android.os.Parcelable class TestNullable(val a: Size?): Parcelable @Parcelize -class TestNotNull(val a: Size): Parcelable \ No newline at end of file +class TestNotNull(val a: Size): Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.asm.txt similarity index 98% rename from plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.asm.txt index f42478e381e..bb2205534ef 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.txt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.asm.txt @@ -19,7 +19,7 @@ public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Cr public java.lang.Object createFromParcel(android.os.Parcel p0) { LABEL (L0) - LINENUMBER (8) + LINENUMBER (37) ALOAD (0) ALOAD (1) INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;) diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.kt index cefc54ca79f..3de99a92bb4 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel, +// CURIOUS_ABOUT: writeToParcel, createFromParcel, // WITH_RUNTIME //FILE: test/JavaClass.java @@ -34,4 +34,4 @@ import kotlinx.parcelize.* import android.os.Parcelable @Parcelize -class Foo(val parcelable: Parcelable): Parcelable \ No newline at end of file +class Foo(val parcelable: Parcelable): Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.asm.txt similarity index 99% rename from plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.asm.txt index d9675c3ca65..42d94b75f68 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.txt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.asm.txt @@ -324,4 +324,4 @@ public final class ParcelableCreatorKt : java/lang/Object { LINENUMBER (28) RETURN } -} \ No newline at end of file +} diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.kt index 1bbbef5fd35..509b251639f 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT test1, test2, test3 +// CURIOUS_ABOUT: test1, test2, test3 // WITH_RUNTIME import kotlinx.parcelize.* diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.kt index 68b769f9d9e..1a0651fb0b9 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.kt @@ -1,8 +1,10 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel +// CURIOUS_ABOUT: writeToParcel, createFromParcel // WITH_RUNTIME - -// The JVM backend doesn't support ShortArray -// IGNORE_BACKEND: JVM +// TARGET_BACKEND: JVM_IR +/* + * Serializing of short arrays is not properly supported in old frontend, so this + * test is on only for JVM IR backend + */ import kotlinx.parcelize.* import android.os.Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/serializable.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/serializable.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/serializable.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/serializable.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/serializable.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/serializable.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/serializable.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/serializable.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/serializable.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/serializable.kt index 225ec06eaaf..c3052b9dc73 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/serializable.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/serializable.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel, +// CURIOUS_ABOUT: writeToParcel, createFromParcel, // WITH_RUNTIME import kotlinx.parcelize.* @@ -8,4 +8,4 @@ import java.io.Serializable class SerializableSimple(val a: String, val b: String) : Serializable @Parcelize -class User(val notNull: SerializableSimple, val nullable: SerializableSimple) : Parcelable \ No newline at end of file +class User(val notNull: SerializableSimple, val nullable: SerializableSimple) : Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.kt index 607b5514ee4..f75b6e85690 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel, , describeContents +// CURIOUS_ABOUT: writeToParcel, createFromParcel, , describeContents // WITH_RUNTIME import kotlinx.parcelize.* diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/simple.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/simple.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/simple.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/simple.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/simple.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/simple.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/simple.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/simple.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/simple.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/simple.kt index 60ae12b82d4..edbbd5aa204 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/simple.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/simple.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel, , describeContents +// CURIOUS_ABOUT: writeToParcel, createFromParcel, , describeContents // WITH_RUNTIME // LOCAL_VARIABLE_TABLE @@ -6,4 +6,4 @@ import kotlinx.parcelize.* import android.os.Parcelable @Parcelize -class User(val firstName: String, val lastName: String, val age: Int, val isProUser: Boolean) : Parcelable \ No newline at end of file +class User(val firstName: String, val lastName: String, val age: Int, val isProUser: Boolean) : Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.kt index a14c8e270fc..8fbd7019884 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.kt @@ -1,8 +1,8 @@ -// CURIOUS_ABOUT writeToParcel +// CURIOUS_ABOUT: writeToParcel // WITH_RUNTIME import kotlinx.parcelize.* import android.os.Parcelable @Parcelize -class Test(val names: List): Parcelable \ No newline at end of file +class Test(val names: List): Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/size.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/size.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/size.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/size.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/size.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/size.asm.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/size.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/size.asm.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/size.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/size.kt index ededf3ce94b..28af6e2516a 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/size.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/size.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel +// CURIOUS_ABOUT: writeToParcel, createFromParcel // WITH_RUNTIME import kotlinx.parcelize.* @@ -10,4 +10,4 @@ import android.util.SizeF data class Test(val size: Size, val nullable: Size?) : Parcelable @Parcelize -data class TestF(val size: SizeF, val nullable: SizeF?) : Parcelable \ No newline at end of file +data class TestF(val size: SizeF, val nullable: SizeF?) : Parcelable diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.ir.txt b/plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.asm.ir.txt similarity index 100% rename from plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.ir.txt rename to plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.asm.ir.txt diff --git a/plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.kt b/plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.kt index af7b6326493..850d1fcbbb9 100644 --- a/plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.kt +++ b/plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT writeToParcel, createFromParcel +// CURIOUS_ABOUT: writeToParcel, createFromParcel // WITH_RUNTIME // IGNORE_BACKEND: JVM diff --git a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeBoxTestGenerated.java b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestGenerated.java similarity index 93% rename from plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeBoxTestGenerated.java rename to plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestGenerated.java index 76c79a479d1..3c8220ebd12 100644 --- a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeBoxTestGenerated.java +++ b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestGenerated.java @@ -3,403 +3,473 @@ * 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.kotlin.parcelize.test; +package org.jetbrains.kotlin.parcelize.test.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/parcelize/parcelize-compiler/testData/box") @TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) public class ParcelizeBoxTestGenerated extends AbstractParcelizeBoxTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath); - } - + @Test public void testAllFilesPresentInBox() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + @Test @TestMetadata("allPrimitiveTypes.kt") public void testAllPrimitiveTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/allPrimitiveTypes.kt"); } + @Test @TestMetadata("allUnsignedTypes.kt") public void testAllUnsignedTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/allUnsignedTypes.kt"); } + @Test @TestMetadata("arraySimple.kt") public void testArraySimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/arraySimple.kt"); } + @Test @TestMetadata("arrays.kt") public void testArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/arrays.kt"); } + @Test @TestMetadata("binder.kt") public void testBinder() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/binder.kt"); } + @Test @TestMetadata("boxedTypes.kt") public void testBoxedTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/boxedTypes.kt"); } + @Test @TestMetadata("bundle.kt") public void testBundle() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/bundle.kt"); } + @Test @TestMetadata("charSequence.kt") public void testCharSequence() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/charSequence.kt"); } + @Test @TestMetadata("customNewArray.kt") public void testCustomNewArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customNewArray.kt"); } + @Test @TestMetadata("customParcelable.kt") public void testCustomParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customParcelable.kt"); } + @Test @TestMetadata("customParcelerScoping.kt") public void testCustomParcelerScoping() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customParcelerScoping.kt"); } + @Test @TestMetadata("customSerializerBoxing.kt") public void testCustomSerializerBoxing() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerBoxing.kt"); } + @Test @TestMetadata("customSerializerSimple.kt") public void testCustomSerializerSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerSimple.kt"); } + @Test @TestMetadata("customSerializerWriteWith.kt") public void testCustomSerializerWriteWith() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerWriteWith.kt"); } + @Test @TestMetadata("customSimple.kt") public void testCustomSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customSimple.kt"); } + @Test @TestMetadata("enumObject.kt") public void testEnumObject() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/enumObject.kt"); } + @Test @TestMetadata("enums.kt") public void testEnums() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/enums.kt"); } + @Test @TestMetadata("exceptions.kt") public void testExceptions() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/exceptions.kt"); } + @Test @TestMetadata("functions.kt") public void testFunctions() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/functions.kt"); } + @Test @TestMetadata("genericParcelable.kt") public void testGenericParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/genericParcelable.kt"); } + @Test @TestMetadata("generics.kt") public void testGenerics() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/generics.kt"); } + @Test @TestMetadata("intArray.kt") public void testIntArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/intArray.kt"); } + @Test @TestMetadata("javaInterop.kt") public void testJavaInterop() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/javaInterop.kt"); } + @Test @TestMetadata("kt19747.kt") public void testKt19747() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747.kt"); } + @Test @TestMetadata("kt19747Deprecated.kt") public void testKt19747Deprecated() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747Deprecated.kt"); } + @Test @TestMetadata("kt19747_2.kt") public void testKt19747_2() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747_2.kt"); } + @Test @TestMetadata("kt19749.kt") public void testKt19749() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19749.kt"); } + @Test @TestMetadata("kt19853.kt") public void testKt19853() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19853.kt"); } + @Test @TestMetadata("kt20002.kt") public void testKt20002() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20002.kt"); } + @Test @TestMetadata("kt20021.kt") public void testKt20021() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20021.kt"); } + @Test @TestMetadata("kt20717.kt") public void testKt20717() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20717.kt"); } + @Test @TestMetadata("kt25839.kt") public void testKt25839() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt25839.kt"); } + @Test @TestMetadata("kt26221.kt") public void testKt26221() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt26221.kt"); } + @Test @TestMetadata("kt36658.kt") public void testKt36658() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt36658.kt"); } + @Test @TestMetadata("kt39981.kt") public void testKt39981() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt39981.kt"); } + @Test @TestMetadata("kt41553.kt") public void testKt41553() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt41553.kt"); } + @Test @TestMetadata("kt41553_2.kt") public void testKt41553_2() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt41553_2.kt"); } + @Test @TestMetadata("kt46567.kt") public void testKt46567() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt46567.kt"); } + @Test @TestMetadata("listKinds.kt") public void testListKinds() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/listKinds.kt"); } + @Test @TestMetadata("listSimple.kt") public void testListSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/listSimple.kt"); } + @Test @TestMetadata("lists.kt") public void testLists() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/lists.kt"); } + @Test @TestMetadata("mapKinds.kt") public void testMapKinds() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/mapKinds.kt"); } + @Test @TestMetadata("mapSimple.kt") public void testMapSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/mapSimple.kt"); } + @Test @TestMetadata("maps.kt") public void testMaps() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/maps.kt"); } + @Test @TestMetadata("nestedArrays.kt") public void testNestedArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedArrays.kt"); } + @Test @TestMetadata("nestedLists.kt") public void testNestedLists() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedLists.kt"); } + @Test @TestMetadata("nestedMaps.kt") public void testNestedMaps() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedMaps.kt"); } + @Test @TestMetadata("nestedParcelable.kt") public void testNestedParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedParcelable.kt"); } + @Test @TestMetadata("nestedSparseArrays.kt") public void testNestedSparseArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedSparseArrays.kt"); } + @Test @TestMetadata("nestedSparseArrays2.kt") public void testNestedSparseArrays2() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedSparseArrays2.kt"); } + @Test @TestMetadata("newArray.kt") public void testNewArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/newArray.kt"); } + @Test @TestMetadata("newArrayParceler.kt") public void testNewArrayParceler() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/newArrayParceler.kt"); } + @Test @TestMetadata("nullableTypes.kt") public void testNullableTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nullableTypes.kt"); } + @Test @TestMetadata("nullableTypesSimple.kt") public void testNullableTypesSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nullableTypesSimple.kt"); } + @Test @TestMetadata("objectWriteParcelable.kt") public void testObjectWriteParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/objectWriteParcelable.kt"); } + @Test @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/objects.kt"); } + @Test @TestMetadata("openParcelize.kt") public void testOpenParcelize() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/openParcelize.kt"); } + @Test @TestMetadata("parcelableValueClass.kt") public void testParcelableValueClass() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/parcelableValueClass.kt"); } + @Test @TestMetadata("parcelizeCustomValueClass.kt") public void testParcelizeCustomValueClass() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/parcelizeCustomValueClass.kt"); } + @Test @TestMetadata("persistableBundle.kt") public void testPersistableBundle() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/persistableBundle.kt"); } + @Test @TestMetadata("primitiveTypes.kt") public void testPrimitiveTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/primitiveTypes.kt"); } + @Test @TestMetadata("privateConstructor.kt") public void testPrivateConstructor() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/privateConstructor.kt"); } + @Test @TestMetadata("recursiveGenerics.kt") public void testRecursiveGenerics() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/recursiveGenerics.kt"); } + @Test @TestMetadata("sealedClass.kt") public void testSealedClass() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedClass.kt"); } + @Test @TestMetadata("sealedClass2.kt") public void testSealedClass2() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedClass2.kt"); } + @Test @TestMetadata("sealedInterface.kt") public void testSealedInterface() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedInterface.kt"); } + @Test @TestMetadata("shortArray.kt") public void testShortArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/shortArray.kt"); } + @Test @TestMetadata("simple.kt") public void testSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/simple.kt"); } + @Test @TestMetadata("simpleDeprecated.kt") public void testSimpleDeprecated() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/simpleDeprecated.kt"); } + @Test @TestMetadata("sparseArrays.kt") public void testSparseArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sparseArrays.kt"); } + @Test @TestMetadata("sparseBooleanArray.kt") public void testSparseBooleanArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sparseBooleanArray.kt"); } + @Test @TestMetadata("typeParameters.kt") public void testTypeParameters() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/typeParameters.kt"); } + @Test @TestMetadata("unsignedArrays.kt") public void testUnsignedArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/unsignedArrays.kt"); } + @Test @TestMetadata("valueClassWrapper.kt") public void testValueClassWrapper() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/valueClassWrapper.kt"); } + @Test @TestMetadata("valueClasses.kt") public void testValueClasses() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/valueClasses.kt"); diff --git a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeBytecodeListingTestGenerated.java b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBytecodeListingTestGenerated.java similarity index 88% rename from plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeBytecodeListingTestGenerated.java rename to plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBytecodeListingTestGenerated.java index 99582e78b58..2c157f9c6cc 100644 --- a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeBytecodeListingTestGenerated.java +++ b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBytecodeListingTestGenerated.java @@ -3,143 +3,155 @@ * 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.kotlin.parcelize.test; +package org.jetbrains.kotlin.parcelize.test.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/parcelize/parcelize-compiler/testData/codegen") @TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) public class ParcelizeBytecodeListingTestGenerated extends AbstractParcelizeBytecodeListingTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath); - } - + @Test public void testAllFilesPresentInCodegen() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + @Test @TestMetadata("classLoaderValues.kt") public void testClassLoaderValues() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.kt"); } + @Test @TestMetadata("customDescribeContents.kt") public void testCustomDescribeContents() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.kt"); } + @Test @TestMetadata("customParcelablesDifferentModule.kt") public void testCustomParcelablesDifferentModule() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.kt"); } + @Test @TestMetadata("customParcelablesSameModule.kt") public void testCustomParcelablesSameModule() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.kt"); } + @Test @TestMetadata("customSimple.kt") public void testCustomSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.kt"); } + @Test @TestMetadata("customSimpleWithNewArray.kt") public void testCustomSimpleWithNewArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.kt"); } + @Test @TestMetadata("describeContentsFromSuperType.kt") public void testDescribeContentsFromSuperType() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.kt"); } + @Test @TestMetadata("duplicatingClinit.kt") public void testDuplicatingClinit() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.kt"); } + @Test @TestMetadata("efficientParcelable.kt") public void testEfficientParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.kt"); } + @Test @TestMetadata("generics.kt") public void testGenerics() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/generics.kt"); } + @Test @TestMetadata("IBinderIInterface.kt") public void testIBinderIInterface() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.kt"); } + @Test @TestMetadata("kt25839.kt") public void testKt25839() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.kt"); } + @Test @TestMetadata("listInsideList.kt") public void testListInsideList() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.kt"); } + @Test @TestMetadata("nullableNotNullSize.kt") public void testNullableNotNullSize() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.kt"); } + @Test @TestMetadata("parcelable.kt") public void testParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.kt"); } + @Test @TestMetadata("parcelableCreator.kt") public void testParcelableCreator() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.kt"); } - @TestMetadata("primitiveArrays.kt") - public void testPrimitiveArrays() throws Exception { - runTest("plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.kt"); - } - + @Test @TestMetadata("serializable.kt") public void testSerializable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/serializable.kt"); } + @Test @TestMetadata("serializeValue.kt") public void testSerializeValue() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.kt"); } + @Test @TestMetadata("simple.kt") public void testSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/simple.kt"); } + @Test @TestMetadata("simpleList.kt") public void testSimpleList() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.kt"); } + @Test @TestMetadata("size.kt") public void testSize() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/size.kt"); } + @Test @TestMetadata("unsignedPrimitiveArrays.kt") public void testUnsignedPrimitiveArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.kt"); diff --git a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBoxTestGenerated.java b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBoxTestGenerated.java similarity index 93% rename from plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBoxTestGenerated.java rename to plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBoxTestGenerated.java index bfe3c483903..42752a03a69 100644 --- a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBoxTestGenerated.java +++ b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBoxTestGenerated.java @@ -3,403 +3,473 @@ * 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.kotlin.parcelize.test; +package org.jetbrains.kotlin.parcelize.test.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/parcelize/parcelize-compiler/testData/box") @TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) public class ParcelizeIrBoxTestGenerated extends AbstractParcelizeIrBoxTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath); - } - + @Test public void testAllFilesPresentInBox() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test @TestMetadata("allPrimitiveTypes.kt") public void testAllPrimitiveTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/allPrimitiveTypes.kt"); } + @Test @TestMetadata("allUnsignedTypes.kt") public void testAllUnsignedTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/allUnsignedTypes.kt"); } + @Test @TestMetadata("arraySimple.kt") public void testArraySimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/arraySimple.kt"); } + @Test @TestMetadata("arrays.kt") public void testArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/arrays.kt"); } + @Test @TestMetadata("binder.kt") public void testBinder() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/binder.kt"); } + @Test @TestMetadata("boxedTypes.kt") public void testBoxedTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/boxedTypes.kt"); } + @Test @TestMetadata("bundle.kt") public void testBundle() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/bundle.kt"); } + @Test @TestMetadata("charSequence.kt") public void testCharSequence() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/charSequence.kt"); } + @Test @TestMetadata("customNewArray.kt") public void testCustomNewArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customNewArray.kt"); } + @Test @TestMetadata("customParcelable.kt") public void testCustomParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customParcelable.kt"); } + @Test @TestMetadata("customParcelerScoping.kt") public void testCustomParcelerScoping() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customParcelerScoping.kt"); } + @Test @TestMetadata("customSerializerBoxing.kt") public void testCustomSerializerBoxing() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerBoxing.kt"); } + @Test @TestMetadata("customSerializerSimple.kt") public void testCustomSerializerSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerSimple.kt"); } + @Test @TestMetadata("customSerializerWriteWith.kt") public void testCustomSerializerWriteWith() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customSerializerWriteWith.kt"); } + @Test @TestMetadata("customSimple.kt") public void testCustomSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/customSimple.kt"); } + @Test @TestMetadata("enumObject.kt") public void testEnumObject() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/enumObject.kt"); } + @Test @TestMetadata("enums.kt") public void testEnums() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/enums.kt"); } + @Test @TestMetadata("exceptions.kt") public void testExceptions() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/exceptions.kt"); } + @Test @TestMetadata("functions.kt") public void testFunctions() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/functions.kt"); } + @Test @TestMetadata("genericParcelable.kt") public void testGenericParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/genericParcelable.kt"); } + @Test @TestMetadata("generics.kt") public void testGenerics() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/generics.kt"); } + @Test @TestMetadata("intArray.kt") public void testIntArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/intArray.kt"); } + @Test @TestMetadata("javaInterop.kt") public void testJavaInterop() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/javaInterop.kt"); } + @Test @TestMetadata("kt19747.kt") public void testKt19747() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747.kt"); } + @Test @TestMetadata("kt19747Deprecated.kt") public void testKt19747Deprecated() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747Deprecated.kt"); } + @Test @TestMetadata("kt19747_2.kt") public void testKt19747_2() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19747_2.kt"); } + @Test @TestMetadata("kt19749.kt") public void testKt19749() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19749.kt"); } + @Test @TestMetadata("kt19853.kt") public void testKt19853() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt19853.kt"); } + @Test @TestMetadata("kt20002.kt") public void testKt20002() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20002.kt"); } + @Test @TestMetadata("kt20021.kt") public void testKt20021() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20021.kt"); } + @Test @TestMetadata("kt20717.kt") public void testKt20717() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt20717.kt"); } + @Test @TestMetadata("kt25839.kt") public void testKt25839() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt25839.kt"); } + @Test @TestMetadata("kt26221.kt") public void testKt26221() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt26221.kt"); } + @Test @TestMetadata("kt36658.kt") public void testKt36658() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt36658.kt"); } + @Test @TestMetadata("kt39981.kt") public void testKt39981() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt39981.kt"); } + @Test @TestMetadata("kt41553.kt") public void testKt41553() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt41553.kt"); } + @Test @TestMetadata("kt41553_2.kt") public void testKt41553_2() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt41553_2.kt"); } + @Test @TestMetadata("kt46567.kt") public void testKt46567() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/kt46567.kt"); } + @Test @TestMetadata("listKinds.kt") public void testListKinds() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/listKinds.kt"); } + @Test @TestMetadata("listSimple.kt") public void testListSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/listSimple.kt"); } + @Test @TestMetadata("lists.kt") public void testLists() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/lists.kt"); } + @Test @TestMetadata("mapKinds.kt") public void testMapKinds() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/mapKinds.kt"); } + @Test @TestMetadata("mapSimple.kt") public void testMapSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/mapSimple.kt"); } + @Test @TestMetadata("maps.kt") public void testMaps() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/maps.kt"); } + @Test @TestMetadata("nestedArrays.kt") public void testNestedArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedArrays.kt"); } + @Test @TestMetadata("nestedLists.kt") public void testNestedLists() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedLists.kt"); } + @Test @TestMetadata("nestedMaps.kt") public void testNestedMaps() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedMaps.kt"); } + @Test @TestMetadata("nestedParcelable.kt") public void testNestedParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedParcelable.kt"); } + @Test @TestMetadata("nestedSparseArrays.kt") public void testNestedSparseArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedSparseArrays.kt"); } + @Test @TestMetadata("nestedSparseArrays2.kt") public void testNestedSparseArrays2() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nestedSparseArrays2.kt"); } + @Test @TestMetadata("newArray.kt") public void testNewArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/newArray.kt"); } + @Test @TestMetadata("newArrayParceler.kt") public void testNewArrayParceler() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/newArrayParceler.kt"); } + @Test @TestMetadata("nullableTypes.kt") public void testNullableTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nullableTypes.kt"); } + @Test @TestMetadata("nullableTypesSimple.kt") public void testNullableTypesSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/nullableTypesSimple.kt"); } + @Test @TestMetadata("objectWriteParcelable.kt") public void testObjectWriteParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/objectWriteParcelable.kt"); } + @Test @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/objects.kt"); } + @Test @TestMetadata("openParcelize.kt") public void testOpenParcelize() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/openParcelize.kt"); } + @Test @TestMetadata("parcelableValueClass.kt") public void testParcelableValueClass() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/parcelableValueClass.kt"); } + @Test @TestMetadata("parcelizeCustomValueClass.kt") public void testParcelizeCustomValueClass() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/parcelizeCustomValueClass.kt"); } + @Test @TestMetadata("persistableBundle.kt") public void testPersistableBundle() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/persistableBundle.kt"); } + @Test @TestMetadata("primitiveTypes.kt") public void testPrimitiveTypes() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/primitiveTypes.kt"); } + @Test @TestMetadata("privateConstructor.kt") public void testPrivateConstructor() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/privateConstructor.kt"); } + @Test @TestMetadata("recursiveGenerics.kt") public void testRecursiveGenerics() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/recursiveGenerics.kt"); } + @Test @TestMetadata("sealedClass.kt") public void testSealedClass() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedClass.kt"); } + @Test @TestMetadata("sealedClass2.kt") public void testSealedClass2() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedClass2.kt"); } + @Test @TestMetadata("sealedInterface.kt") public void testSealedInterface() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sealedInterface.kt"); } + @Test @TestMetadata("shortArray.kt") public void testShortArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/shortArray.kt"); } + @Test @TestMetadata("simple.kt") public void testSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/simple.kt"); } + @Test @TestMetadata("simpleDeprecated.kt") public void testSimpleDeprecated() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/simpleDeprecated.kt"); } + @Test @TestMetadata("sparseArrays.kt") public void testSparseArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sparseArrays.kt"); } + @Test @TestMetadata("sparseBooleanArray.kt") public void testSparseBooleanArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/sparseBooleanArray.kt"); } + @Test @TestMetadata("typeParameters.kt") public void testTypeParameters() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/typeParameters.kt"); } + @Test @TestMetadata("unsignedArrays.kt") public void testUnsignedArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/unsignedArrays.kt"); } + @Test @TestMetadata("valueClassWrapper.kt") public void testValueClassWrapper() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/valueClassWrapper.kt"); } + @Test @TestMetadata("valueClasses.kt") public void testValueClasses() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/box/valueClasses.kt"); diff --git a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBytecodeListingTestGenerated.java b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBytecodeListingTestGenerated.java similarity index 91% rename from plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBytecodeListingTestGenerated.java rename to plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBytecodeListingTestGenerated.java index c7e0e09f9bb..cc505fb7854 100644 --- a/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBytecodeListingTestGenerated.java +++ b/plugins/parcelize/parcelize-compiler/tests-gen/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBytecodeListingTestGenerated.java @@ -3,143 +3,161 @@ * 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.kotlin.parcelize.test; +package org.jetbrains.kotlin.parcelize.test.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/parcelize/parcelize-compiler/testData/codegen") @TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) public class ParcelizeIrBytecodeListingTestGenerated extends AbstractParcelizeIrBytecodeListingTest { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath); - } - + @Test public void testAllFilesPresentInCodegen() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test @TestMetadata("classLoaderValues.kt") public void testClassLoaderValues() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/classLoaderValues.kt"); } + @Test @TestMetadata("customDescribeContents.kt") public void testCustomDescribeContents() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customDescribeContents.kt"); } + @Test @TestMetadata("customParcelablesDifferentModule.kt") public void testCustomParcelablesDifferentModule() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesDifferentModule.kt"); } + @Test @TestMetadata("customParcelablesSameModule.kt") public void testCustomParcelablesSameModule() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customParcelablesSameModule.kt"); } + @Test @TestMetadata("customSimple.kt") public void testCustomSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customSimple.kt"); } + @Test @TestMetadata("customSimpleWithNewArray.kt") public void testCustomSimpleWithNewArray() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/customSimpleWithNewArray.kt"); } + @Test @TestMetadata("describeContentsFromSuperType.kt") public void testDescribeContentsFromSuperType() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/describeContentsFromSuperType.kt"); } + @Test @TestMetadata("duplicatingClinit.kt") public void testDuplicatingClinit() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/duplicatingClinit.kt"); } + @Test @TestMetadata("efficientParcelable.kt") public void testEfficientParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/efficientParcelable.kt"); } + @Test @TestMetadata("generics.kt") public void testGenerics() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/generics.kt"); } + @Test @TestMetadata("IBinderIInterface.kt") public void testIBinderIInterface() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/IBinderIInterface.kt"); } + @Test @TestMetadata("kt25839.kt") public void testKt25839() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/kt25839.kt"); } + @Test @TestMetadata("listInsideList.kt") public void testListInsideList() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/listInsideList.kt"); } + @Test @TestMetadata("nullableNotNullSize.kt") public void testNullableNotNullSize() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/nullableNotNullSize.kt"); } + @Test @TestMetadata("parcelable.kt") public void testParcelable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/parcelable.kt"); } + @Test @TestMetadata("parcelableCreator.kt") public void testParcelableCreator() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/parcelableCreator.kt"); } + @Test @TestMetadata("primitiveArrays.kt") public void testPrimitiveArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/primitiveArrays.kt"); } + @Test @TestMetadata("serializable.kt") public void testSerializable() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/serializable.kt"); } + @Test @TestMetadata("serializeValue.kt") public void testSerializeValue() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/serializeValue.kt"); } + @Test @TestMetadata("simple.kt") public void testSimple() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/simple.kt"); } + @Test @TestMetadata("simpleList.kt") public void testSimpleList() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/simpleList.kt"); } + @Test @TestMetadata("size.kt") public void testSize() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/size.kt"); } + @Test @TestMetadata("unsignedPrimitiveArrays.kt") public void testUnsignedPrimitiveArrays() throws Exception { runTest("plugins/parcelize/parcelize-compiler/testData/codegen/unsignedPrimitiveArrays.kt"); diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/AbstractParcelizeBoxTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/AbstractParcelizeBoxTest.kt deleted file mode 100644 index 8218466e6dc..00000000000 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/AbstractParcelizeBoxTest.kt +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. 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.kotlin.parcelize.test - -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot -import org.jetbrains.kotlin.codegen.CodegenTestCase -import org.jetbrains.kotlin.codegen.getClassFiles -import org.jetbrains.kotlin.parcelize.ParcelizeComponentRegistrar -import org.jetbrains.kotlin.test.TargetBackend -import org.jetbrains.kotlin.test.util.KtTestUtil -import org.jetbrains.kotlin.utils.PathUtil -import org.jetbrains.org.objectweb.asm.ClassWriter -import org.jetbrains.org.objectweb.asm.ClassWriter.COMPUTE_FRAMES -import org.jetbrains.org.objectweb.asm.ClassWriter.COMPUTE_MAXS -import org.jetbrains.org.objectweb.asm.Label -import org.jetbrains.org.objectweb.asm.Opcodes.* -import org.jetbrains.org.objectweb.asm.Type -import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter -import org.junit.runner.JUnitCore -import java.io.File -import java.nio.file.Files -import java.util.concurrent.TimeUnit - -abstract class AbstractParcelizeIrBoxTest : AbstractParcelizeBoxTest() { - override val backend = TargetBackend.JVM_IR -} - -abstract class AbstractParcelizeBoxTest : CodegenTestCase() { - companion object { - val LIBRARY_KT = File("plugins/parcelize/parcelize-compiler/testData/boxLib.kt") - private const val ANDROID_TOOLS_PREFIX = "studio.android.sdktools." - - private val androidPluginPath: String by lazy { - System.getProperty("ideaSdk.androidPlugin.path")?.takeIf { File(it).isDirectory } - ?: throw RuntimeException("Unable to get a valid path from 'ideaSdk.androidPlugin.path' property, please point it to the Idea android plugin location") - } - - private fun getLayoutLibFile(pattern: String): File { - val nameRegex = "^($ANDROID_TOOLS_PREFIX)?$pattern-[0-9\\.]+\\.jar$".toRegex() - return File(androidPluginPath).listFiles().orEmpty().singleOrNull { it.name.matches(nameRegex) } - ?: error("Can't find file for pattern $nameRegex in $androidPluginPath. " + - "Available files: \n${File(androidPluginPath).list().orEmpty().asList()}") - } - - val layoutlibJar: File by lazy { getLayoutLibFile("layoutlib(-jre[0-9]+)?") } - val layoutlibApiJar: File by lazy { getLayoutLibFile("layoutlib-api") } - - private val JUNIT_GENERATED_TEST_CLASS_BYTES by lazy { constructSyntheticTestClass() } - private const val JUNIT_GENERATED_TEST_CLASS_FQNAME = "test.JunitTest" - - private fun constructSyntheticTestClass(): ByteArray { - return with(ClassWriter(COMPUTE_MAXS or COMPUTE_FRAMES)) { - visit(49, ACC_PUBLIC, JUNIT_GENERATED_TEST_CLASS_FQNAME.replace('.', '/'), null, "java/lang/Object", emptyArray()) - visitSource(null, null) - - with(visitAnnotation("Lorg/junit/runner/RunWith;", true)) { - visit("value", Type.getType("Lorg/robolectric/RobolectricTestRunner;")) - visitEnd() - } - - with(visitAnnotation("Lorg/robolectric/annotation/Config;", true)) { - visit("sdk", intArrayOf(21)) - visit("manifest", "--none") - visitEnd() - } - - with(visitMethod(ACC_PUBLIC, "", "()V", null, null)) { - visitVarInsn(ALOAD, 0) - visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "", "()V", false) - - visitInsn(RETURN) - visitMaxs(-1, -1) - visitEnd() - } - - with(visitMethod(ACC_PUBLIC, "test", "()V", null, null)) { - visitAnnotation("Lorg/junit/Test;", true).visitEnd() - - val v = InstructionAdapter(this) - - val assertionOk = Label() - - v.invokestatic("test/TestKt", "box", "()Ljava/lang/String;", false) // -> ret - v.dup() // -> ret, ret - v.aconst("OK") // -> ret, ret, ok - v.invokevirtual("java/lang/String", "equals", "(Ljava/lang/Object;)Z", false) // -> ret, eq - v.ifne(assertionOk) // -> ret - - val assertionErrorType = Type.getObjectType("java/lang/AssertionError") - - v.anew(assertionErrorType) // -> ret, ae - v.dupX1() // -> ae, ret, ae - v.swap() // -> ae, ae, ret - v.invokespecial(assertionErrorType.internalName, "", "(Ljava/lang/Object;)V", false) // -> ae - v.athrow() - - v.visitLabel(assertionOk) - v.pop() // -> [empty] - v.areturn(Type.VOID_TYPE) - - visitMaxs(-1, -1) - visitEnd() - } - - visitEnd() - toByteArray() - } - } - } - - private fun getClasspathForTest(): List { - val kotlinRuntimeJar = PathUtil.kotlinPathsForIdeaPlugin.stdlibPath - - val robolectricClasspath = System.getProperty("robolectric.classpath") - ?: throw RuntimeException("Unable to get a valid classpath from 'robolectric.classpath' property, please set it accordingly") - val robolectricJars = robolectricClasspath.split(File.pathSeparator) - .map { File(it) } - .sortedBy { it.nameWithoutExtension } - - val junitCoreResourceName = JUnitCore::class.java.name.replace('.', '/') + ".class" - val junitJar = File( - JUnitCore::class.java.classLoader.getResource(junitCoreResourceName)!!.file - .substringAfter("file:") - .substringBeforeLast('!') - ) - - val parcelizeRuntimeJars = System.getProperty("parcelizeRuntime.classpath")?.split(File.pathSeparator)?.map(::File) - ?: error("Unable to get a valid classpath from 'parcelizeRuntime.classpath' property") - - return listOf(kotlinRuntimeJar, layoutlibJar, layoutlibApiJar) + robolectricJars + junitJar + parcelizeRuntimeJars - } - - override fun doMultiFileTest(wholeFile: File, files: List) { - compile(files + TestFile(LIBRARY_KT.name, LIBRARY_KT.readText())) - - val javaBin = File(System.getProperty("java.home").takeIf { it.isNotEmpty() } ?: error("JAVA_HOME is not set"), "bin") - val javaExe = File(javaBin, "java.exe").takeIf { it.exists() } ?: File(javaBin, "java") - assert(javaExe.exists()) { "Can't find 'java' executable in $javaBin" } - - val libraryClasspath = getClasspathForTest() - val dirForTestClasses = Files.createTempDirectory("parcel").toFile() - - fun writeClass(fqNameOrPath: String, bytes: ByteArray) { - val path = if (fqNameOrPath.endsWith(".class")) fqNameOrPath else (fqNameOrPath.replace('.', '/') + ".class") - File(dirForTestClasses, path).also { it.parentFile.mkdirs() }.writeBytes(bytes) - } - - try { - writeClass(JUNIT_GENERATED_TEST_CLASS_FQNAME, JUNIT_GENERATED_TEST_CLASS_BYTES) - classFileFactory.getClassFiles().forEach { writeClass(it.relativePath, it.asByteArray()) } - javaClassesOutputDirectory?.listFiles()?.forEach { writeClass(it.name, it.readBytes()) } - - val process = ProcessBuilder( - javaExe.absolutePath, - "-ea", - "-classpath", - (libraryClasspath + dirForTestClasses).joinToString(File.pathSeparator) { it.absolutePath }, - JUnitCore::class.java.name, - JUNIT_GENERATED_TEST_CLASS_FQNAME - ).start() - - val out = process.inputStream.bufferedReader().lineSequence().joinToString("\n") - val err = process.errorStream.bufferedReader().lineSequence().joinToString("\n") - - process.waitFor(3, TimeUnit.MINUTES) - if (process.exitValue() != 0) { - println(out) - println(err) - - throw AssertionError("Process exited with exit code ${process.exitValue()} \n" + classFileFactory.createText()) - } - } finally { - if (!dirForTestClasses.deleteRecursively()) { - throw AssertionError("Unable to delete $dirForTestClasses") - } - } - } - - override fun setupEnvironment(environment: KotlinCoreEnvironment) { - ParcelizeComponentRegistrar.registerParcelizeComponents(environment.project) - addParcelizeRuntimeLibrary(environment) - environment.updateClasspath(listOf(JvmClasspathRoot(KtTestUtil.findAndroidApiJar()))) - } - - override fun updateJavaClasspath(javaClasspath: MutableList) { - javaClasspath += KtTestUtil.findAndroidApiJar().absolutePath - } -} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/AbstractParcelizeBytecodeListingTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/AbstractParcelizeBytecodeListingTest.kt deleted file mode 100644 index 96e6f620189..00000000000 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/AbstractParcelizeBytecodeListingTest.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. 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.kotlin.parcelize.test - -import org.jetbrains.kotlin.ObsoleteTestInfrastructure -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.codegen.AbstractAsmLikeInstructionListingTest -import org.jetbrains.kotlin.parcelize.ParcelizeComponentRegistrar -import org.jetbrains.kotlin.test.TargetBackend -import java.io.File - -@OptIn(ObsoleteTestInfrastructure::class) -abstract class AbstractParcelizeBytecodeListingTest : AbstractAsmLikeInstructionListingTest() { - override fun setupEnvironment(environment: KotlinCoreEnvironment) { - ParcelizeComponentRegistrar.registerParcelizeComponents(environment.project) - addParcelizeRuntimeLibrary(environment) - addAndroidJarLibrary(environment) - } -} - -abstract class AbstractParcelizeIrBytecodeListingTest : AbstractParcelizeBytecodeListingTest() { - override val backend = TargetBackend.JVM_IR - - override fun getExpectedTextFileName(wholeFile: File): String { - return wholeFile.nameWithoutExtension + ".ir.txt" - } -} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/ParcelizeBoxTestWithSerializableLikeExtension.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/ParcelizeBoxTestWithSerializableLikeExtension.kt deleted file mode 100644 index c3c94318b9a..00000000000 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/ParcelizeBoxTestWithSerializableLikeExtension.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.parcelize.test - -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension - -class ParcelizeBoxTestWithSerializableLikeExtension : AbstractParcelizeBoxTest() { - fun testSimple() = doTest("plugins/parcelize/parcelize-compiler/testData/box/simple.kt") - - override fun setupEnvironment(environment: KotlinCoreEnvironment) { - super.setupEnvironment(environment) - SyntheticResolveExtension.registerExtension(environment.project, SerializableLike()) - } - - private class SerializableLike : SyntheticResolveExtension { - override fun getSyntheticCompanionObjectNameIfNeeded(thisDescriptor: ClassDescriptor): Name? { - fun ClassDescriptor.isSerializableLike() = annotations.hasAnnotation(FqName("test.SerializableLike")) - - return when { - thisDescriptor.kind == ClassKind.CLASS && thisDescriptor.isSerializableLike() -> Name.identifier("Companion") - else -> return null - } - } - } -} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt new file mode 100644 index 00000000000..dfe9682b1b5 --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBoxTest.kt @@ -0,0 +1,108 @@ +/* + * 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.kotlin.parcelize.test.runners + +import org.jetbrains.kotlin.parcelize.test.services.ParcelizeEnvironmentConfigurator +import org.jetbrains.kotlin.parcelize.test.services.ParcelizeMainClassProvider +import org.jetbrains.kotlin.parcelize.test.services.ParcelizeRuntimeClasspathProvider +import org.jetbrains.kotlin.parcelize.test.services.ParcelizeUtilSourcesProvider +import org.jetbrains.kotlin.test.Constructor +import org.jetbrains.kotlin.test.TargetBackend +import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor +import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput +import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade +import org.jetbrains.kotlin.test.backend.ir.IrBackendInput +import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.builders.configureClassicFrontendHandlersStep +import org.jetbrains.kotlin.test.builders.configureFirHandlersStep +import org.jetbrains.kotlin.test.directives.CodegenTestDirectives +import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.REQUIRES_SEPARATE_PROCESS +import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS +import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_ONLY_EXPLICITLY_DEFINED_DEBUG_INFO +import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter +import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter +import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade +import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact +import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler +import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler +import org.jetbrains.kotlin.test.model.* +import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest +import org.jetbrains.kotlin.test.runners.codegen.commonConfigurationForCodegenTest +import org.jetbrains.kotlin.test.runners.codegen.configureCommonHandlersForBoxTest +import org.jetbrains.kotlin.test.services.jvm.JvmBoxMainClassProvider +import org.jetbrains.kotlin.test.services.service + +abstract class AbstractParcelizeBoxTestBase, I : ResultingArtifact.BackendInput>( + val targetFrontend: FrontendKind, + targetBackend: TargetBackend +) : AbstractKotlinCompilerWithTargetBackendTest(targetBackend) { + abstract val frontendFacade: Constructor> + abstract val frontendToBackendConverter: Constructor> + abstract val backendFacade: Constructor> + + override fun TestConfigurationBuilder.configuration() { + defaultDirectives { + DIAGNOSTICS with "-warnings" + +REQUIRES_SEPARATE_PROCESS + +REPORT_ONLY_EXPLICITLY_DEFINED_DEBUG_INFO + } + + commonConfigurationForCodegenTest(targetFrontend, frontendFacade, frontendToBackendConverter, backendFacade) + + configureClassicFrontendHandlersStep { + useHandlers( + ::ClassicDiagnosticsHandler + ) + } + + configureFirHandlersStep { + useHandlers( + ::FirDiagnosticsHandler + ) + } + + configureCommonHandlersForBoxTest() + + useCustomRuntimeClasspathProviders(::ParcelizeRuntimeClasspathProvider) + useConfigurators(::ParcelizeEnvironmentConfigurator) + useAdditionalSourceProviders(::ParcelizeUtilSourcesProvider) + + useAdditionalService(service(::ParcelizeMainClassProvider)) + + useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor) + + enableMetaInfoHandler() + } +} + +open class AbstractParcelizeBoxTest : AbstractParcelizeBoxTestBase( + FrontendKinds.ClassicFrontend, + TargetBackend.JVM +) { + override val frontendFacade: Constructor> + get() = ::ClassicFrontendFacade + + override val frontendToBackendConverter: Constructor> + get() = ::ClassicFrontend2ClassicBackendConverter + + override val backendFacade: Constructor> + get() = ::ClassicJvmBackendFacade +} + +open class AbstractParcelizeIrBoxTest : AbstractParcelizeBoxTestBase( + FrontendKinds.ClassicFrontend, + TargetBackend.JVM_IR +) { + override val frontendFacade: Constructor> + get() = ::ClassicFrontendFacade + + override val frontendToBackendConverter: Constructor> + get() = ::ClassicFrontend2IrConverter + + override val backendFacade: Constructor> + get() = ::JvmIrBackendFacade +} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBytecodeListingTest.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBytecodeListingTest.kt new file mode 100644 index 00000000000..b643405209f --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/AbstractParcelizeBytecodeListingTest.kt @@ -0,0 +1,33 @@ +/* + * 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.kotlin.parcelize.test.runners + +import org.jetbrains.kotlin.parcelize.test.services.ParcelizeEnvironmentConfigurator +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.directives.AsmLikeInstructionListingDirectives.IR_DIFFERENCE +import org.jetbrains.kotlin.test.runners.codegen.AbstractAsmLikeInstructionListingTest +import org.jetbrains.kotlin.test.runners.codegen.AbstractIrAsmLikeInstructionListingTest + +open class AbstractParcelizeBytecodeListingTest : AbstractAsmLikeInstructionListingTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configureParcelizeSpecific() + } +} + +open class AbstractParcelizeIrBytecodeListingTest : AbstractIrAsmLikeInstructionListingTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configureParcelizeSpecific() + } +} + +private fun TestConfigurationBuilder.configureParcelizeSpecific() { + defaultDirectives { + +IR_DIFFERENCE + } + useConfigurators(::ParcelizeEnvironmentConfigurator) +} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestWithSerializableLikeExtension.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestWithSerializableLikeExtension.kt new file mode 100644 index 00000000000..ede27aec6d9 --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeBoxTestWithSerializableLikeExtension.kt @@ -0,0 +1,27 @@ +/* + * 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.kotlin.parcelize.test.runners + +import com.intellij.testFramework.TestDataPath +import org.jetbrains.kotlin.parcelize.test.services.SerializableLikeExtensionProvider +import org.jetbrains.kotlin.test.TestMetadata +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.junit.jupiter.api.Test + +@TestMetadata("plugins/parcelize/parcelize-compiler/testData/box") +@TestDataPath("\$PROJECT_ROOT") +class ParcelizeBoxTestWithSerializableLikeExtension : AbstractParcelizeBoxTest() { + @Test + @TestMetadata("simple.kt") + fun testSimple() { + runTest("plugins/parcelize/parcelize-compiler/testData/box/simple.kt") + } + + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.useConfigurators(::SerializableLikeExtensionProvider) + } +} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBoxTestWithSerializableLikeExtension.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBoxTestWithSerializableLikeExtension.kt new file mode 100644 index 00000000000..7edc53d4885 --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/runners/ParcelizeIrBoxTestWithSerializableLikeExtension.kt @@ -0,0 +1,27 @@ +/* + * 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.kotlin.parcelize.test.runners + +import com.intellij.testFramework.TestDataPath +import org.jetbrains.kotlin.parcelize.test.services.SerializableLikeExtensionProvider +import org.jetbrains.kotlin.test.TestMetadata +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.junit.jupiter.api.Test + +@TestMetadata("plugins/parcelize/parcelize-compiler/testData/box") +@TestDataPath("\$PROJECT_ROOT") +class ParcelizeIrBoxTestWithSerializableLikeExtension : AbstractParcelizeIrBoxTest() { + @Test + @TestMetadata("simple.kt") + fun testSimple() { + runTest("plugins/parcelize/parcelize-compiler/testData/box/simple.kt") + } + + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.useConfigurators(::SerializableLikeExtensionProvider) + } +} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt new file mode 100644 index 00000000000..54b1fd1426d --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeEnvironmentConfigurator.kt @@ -0,0 +1,30 @@ +/* + * 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.kotlin.parcelize.test.services + +import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots +import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.parcelize.ParcelizeComponentRegistrar +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.EnvironmentConfigurator +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.util.KtTestUtil +import org.jetbrains.kotlin.utils.PathUtil +import java.io.File + +class ParcelizeEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) { + override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) { + val runtimeLibrary = File(PathUtil.kotlinPathsForCompiler.libPath, PathUtil.PARCELIZE_RUNTIME_PLUGIN_JAR_NAME) + val androidExtensionsRuntimeLibrary = File(PathUtil.kotlinPathsForCompiler.libPath, PathUtil.ANDROID_EXTENSIONS_RUNTIME_PLUGIN_JAR_NAME) + val androidApiJar = KtTestUtil.findAndroidApiJar() + configuration.addJvmClasspathRoots(listOf(runtimeLibrary, androidExtensionsRuntimeLibrary, androidApiJar)) + } + + override fun registerCompilerExtensions(project: Project) { + ParcelizeComponentRegistrar.registerParcelizeComponents(project) + } +} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeMainClassProvider.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeMainClassProvider.kt new file mode 100644 index 00000000000..97d7bda0108 --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeMainClassProvider.kt @@ -0,0 +1,20 @@ +/* + * 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.kotlin.parcelize.test.services + +import org.jetbrains.kotlin.parcelize.test.services.ParcelizeRuntimeClasspathProvider.Companion.JUNIT_GENERATED_TEST_CLASS_FQNAME +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.services.jvm.JvmBoxMainClassProvider +import org.junit.runner.JUnitCore + +class ParcelizeMainClassProvider(testServices: TestServices) : JvmBoxMainClassProvider(testServices) { + override fun getMainClassNameAndAdditionalArguments(): List { + return listOf( + JUnitCore::class.java.name, + JUNIT_GENERATED_TEST_CLASS_FQNAME + ) + } +} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeRuntimeClasspathProvider.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeRuntimeClasspathProvider.kt new file mode 100644 index 00000000000..97498b39bee --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeRuntimeClasspathProvider.kt @@ -0,0 +1,145 @@ +/* + * 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.kotlin.parcelize.test.services + +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.RuntimeClasspathProvider +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.services.jvm.compiledClassesManager +import org.jetbrains.kotlin.test.services.temporaryDirectoryManager +import org.jetbrains.kotlin.utils.PathUtil +import org.jetbrains.org.objectweb.asm.ClassWriter +import org.jetbrains.org.objectweb.asm.Label +import org.jetbrains.org.objectweb.asm.Opcodes +import org.jetbrains.org.objectweb.asm.Type +import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter +import org.junit.runner.JUnitCore +import java.io.File + +class ParcelizeRuntimeClasspathProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) { + companion object { + val layoutlibJar: File by lazy { getLayoutLibFile("layoutlib(-jre[0-9]+)?") } + val layoutlibApiJar: File by lazy { getLayoutLibFile("layoutlib-api") } + + private const val ANDROID_TOOLS_PREFIX = "studio.android.sdktools." + + private val androidPluginPath: String by lazy { + System.getProperty("ideaSdk.androidPlugin.path")?.takeIf { File(it).isDirectory } + ?: throw RuntimeException("Unable to get a valid path from 'ideaSdk.androidPlugin.path' property, please point it to the Idea android plugin location") + } + + private fun getLayoutLibFile(pattern: String): File { + val nameRegex = """^(${ANDROID_TOOLS_PREFIX})?$pattern-[0-9.]+\.jar$""".toRegex() + return File(androidPluginPath).listFiles().orEmpty().singleOrNull { it.name.matches(nameRegex) } + ?: error( + """ + Can't find file for pattern $nameRegex in ${androidPluginPath}. + Available files: ${File(androidPluginPath).list().orEmpty().asList()} + """.trimIndent() + ) + } + + private val JUNIT_GENERATED_TEST_CLASS_BYTES by lazy { constructSyntheticTestClass() } + private const val JUNIT_GENERATED_TEST_CLASS_PACKAGE = "test" + private const val JUNIT_GENERATED_TEST_CLASS_NAME = "JunitTest.class" + const val JUNIT_GENERATED_TEST_CLASS_FQNAME = "test.JunitTest" + + private fun constructSyntheticTestClass(): ByteArray { + return with(ClassWriter(ClassWriter.COMPUTE_MAXS or ClassWriter.COMPUTE_FRAMES)) { + visit(49, Opcodes.ACC_PUBLIC, JUNIT_GENERATED_TEST_CLASS_FQNAME.replace('.', '/'), null, "java/lang/Object", emptyArray()) + visitSource(null, null) + + with(visitAnnotation("Lorg/junit/runner/RunWith;", true)) { + visit("value", Type.getType("Lorg/robolectric/RobolectricTestRunner;")) + visitEnd() + } + + with(visitAnnotation("Lorg/robolectric/annotation/Config;", true)) { + visit("sdk", intArrayOf(21)) + visit("manifest", "--none") + visitEnd() + } + + with(visitMethod(Opcodes.ACC_PUBLIC, "", "()V", null, null)) { + visitVarInsn(Opcodes.ALOAD, 0) + visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "", "()V", false) + + visitInsn(Opcodes.RETURN) + visitMaxs(-1, -1) + visitEnd() + } + + with(visitMethod(Opcodes.ACC_PUBLIC, "test", "()V", null, null)) { + visitAnnotation("Lorg/junit/Test;", true).visitEnd() + + val v = InstructionAdapter(this) + + val assertionOk = Label() + + v.invokestatic("test/TestKt", "box", "()Ljava/lang/String;", false) // -> ret + v.dup() // -> ret, ret + v.aconst("OK") // -> ret, ret, ok + v.invokevirtual("java/lang/String", "equals", "(Ljava/lang/Object;)Z", false) // -> ret, eq + v.ifne(assertionOk) // -> ret + + val assertionErrorType = Type.getObjectType("java/lang/AssertionError") + + v.anew(assertionErrorType) // -> ret, ae + v.dupX1() // -> ae, ret, ae + v.swap() // -> ae, ae, ret + v.invokespecial(assertionErrorType.internalName, "", "(Ljava/lang/Object;)V", false) // -> ae + v.athrow() + + v.visitLabel(assertionOk) + v.pop() // -> [empty] + v.areturn(Type.VOID_TYPE) + + visitMaxs(-1, -1) + visitEnd() + } + + visitEnd() + toByteArray() + } + } + } + + override fun runtimeClassPaths(module: TestModule): List { + val kotlinRuntimeJar = PathUtil.kotlinPathsForIdeaPlugin.stdlibPath + + val robolectricClasspath = System.getProperty("robolectric.classpath") + ?: throw RuntimeException("Unable to get a valid classpath from 'robolectric.classpath' property, please set it accordingly") + val robolectricJars = robolectricClasspath.split(File.pathSeparator) + .map { File(it) } + .sortedBy { it.nameWithoutExtension } + + val junitCoreResourceName = JUnitCore::class.java.name.replace('.', '/') + ".class" + val junitJar = File( + JUnitCore::class.java.classLoader.getResource(junitCoreResourceName)!!.file + .substringAfter("file:") + .substringBeforeLast('!') + ) + + val parcelizeRuntimeJars = System.getProperty("parcelizeRuntime.classpath")?.split(File.pathSeparator)?.map(::File) + ?: error("Unable to get a valid classpath from 'parcelizeRuntime.classpath' property") + + val tempDir = testServices.temporaryDirectoryManager.getOrCreateTempDirectory("additionalClassFiles") + tempDir + .resolve(JUNIT_GENERATED_TEST_CLASS_PACKAGE).also { it.mkdir() } + .resolve(JUNIT_GENERATED_TEST_CLASS_NAME) + .apply { writeBytes(JUNIT_GENERATED_TEST_CLASS_BYTES) } + + return buildList { + add(kotlinRuntimeJar) + add(layoutlibJar) + add(layoutlibApiJar) + addAll(robolectricJars) + add(junitJar) + addAll(parcelizeRuntimeJars) + add(tempDir) + } + } +} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeUtilSourcesProvider.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeUtilSourcesProvider.kt new file mode 100644 index 00000000000..088dfbf34c6 --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/ParcelizeUtilSourcesProvider.kt @@ -0,0 +1,22 @@ +/* + * 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.kotlin.parcelize.test.services + +import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives +import org.jetbrains.kotlin.test.model.TestFile +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.AdditionalSourceProvider +import org.jetbrains.kotlin.test.services.TestServices +import java.io.File + +class ParcelizeUtilSourcesProvider(testServices: TestServices, baseDir: String = ".") : AdditionalSourceProvider(testServices) { + private val libraryPath = "$baseDir/plugins/parcelize/parcelize-compiler/testData/boxLib.kt" + + @OptIn(ExperimentalStdlibApi::class) + override fun produceAdditionalFiles(globalDirectives: RegisteredDirectives, module: TestModule): List { + return listOf(File(libraryPath).toTestFile()) + } +} diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBoxTestWithSerializableLikeExtension.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/SerializableLikeExtensionProvider.kt similarity index 61% rename from plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBoxTestWithSerializableLikeExtension.kt rename to plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/SerializableLikeExtensionProvider.kt index 9fe3959d8ad..0c9f42f6d8f 100644 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/ParcelizeIrBoxTestWithSerializableLikeExtension.kt +++ b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/services/SerializableLikeExtensionProvider.kt @@ -1,23 +1,22 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.kotlin.parcelize.test +package org.jetbrains.kotlin.parcelize.test.services -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment +import com.intellij.openapi.project.Project import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension +import org.jetbrains.kotlin.test.services.EnvironmentConfigurator +import org.jetbrains.kotlin.test.services.TestServices -class ParcelizeIrBoxTestWithSerializableLikeExtension : AbstractParcelizeIrBoxTest() { - fun testSimple() = doTest("plugins/parcelize/parcelize-compiler/testData/box/simple.kt") - - override fun setupEnvironment(environment: KotlinCoreEnvironment) { - super.setupEnvironment(environment) - SyntheticResolveExtension.registerExtension(environment.project, SerializableLike()) +class SerializableLikeExtensionProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) { + override fun registerCompilerExtensions(project: Project) { + SyntheticResolveExtension.registerExtension(project, SerializableLike()) } private class SerializableLike : SyntheticResolveExtension { diff --git a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/testUtils.kt b/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/testUtils.kt deleted file mode 100644 index f1270eec9f0..00000000000 --- a/plugins/parcelize/parcelize-compiler/tests/org/jetbrains/kotlin/parcelize/test/testUtils.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2010-2020 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.kotlin.parcelize.test - -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot -import org.jetbrains.kotlin.test.util.KtTestUtil -import org.jetbrains.kotlin.utils.PathUtil -import java.io.File - -fun addParcelizeRuntimeLibrary(environment: KotlinCoreEnvironment) { - val runtimeLibrary = File(PathUtil.kotlinPathsForCompiler.libPath, PathUtil.PARCELIZE_RUNTIME_PLUGIN_JAR_NAME) - val androidExtensionsRuntimeLibrary = File(PathUtil.kotlinPathsForCompiler.libPath, PathUtil.ANDROID_EXTENSIONS_RUNTIME_PLUGIN_JAR_NAME) - environment.updateClasspath(listOf(JvmClasspathRoot(runtimeLibrary), JvmClasspathRoot(androidExtensionsRuntimeLibrary))) -} - -fun addAndroidJarLibrary(environment: KotlinCoreEnvironment) { - environment.updateClasspath(listOf(JvmClasspathRoot(KtTestUtil.findAndroidApiJar()))) -}