From 6cf3e0e38e2c91445eff7d58558f30dd59bb27a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Sch=C3=A4fer?= Date: Thu, 2 Apr 2020 12:55:56 +0200 Subject: [PATCH] Parcelize: Add a test for exceptions in parcels (KT-31830) --- .../parcel/ParcelBoxTestGenerated.java | 5 ++++ .../parcel/ParcelIrBoxTestGenerated.java | 5 ++++ .../testData/parcel/box/exceptions.kt | 24 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java index b83f9686766..f5d9570b48f 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java @@ -89,6 +89,11 @@ public class ParcelBoxTestGenerated extends AbstractParcelBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/enums.kt"); } + @TestMetadata("exceptions.kt") + public void testExceptions() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt"); + } + @TestMetadata("intArray.kt") public void testIntArray() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.kt"); diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java index 5673124dd47..dba31286869 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java @@ -89,6 +89,11 @@ public class ParcelIrBoxTestGenerated extends AbstractParcelIrBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/enums.kt"); } + @TestMetadata("exceptions.kt") + public void testExceptions() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt"); + } + @TestMetadata("intArray.kt") public void testIntArray() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.kt"); diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt new file mode 100644 index 00000000000..2f68e5aac0f --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/exceptions.kt @@ -0,0 +1,24 @@ +// IGNORE_BACKEND: JVM +// Parcel.readException throws the exception it reads and only supports a small number of exception types. +// If we have to parcel an exception we should instead use read/writeSerializable (compare KT-31830) +// WITH_RUNTIME + +@file:JvmName("TestKt") +package test + +import kotlinx.android.parcel.* +import android.os.Parcel +import android.os.Parcelable + +@Parcelize +class ExceptionContainer(val exn: Exception) : Parcelable + +fun box() = parcelTest { parcel -> + val test = ExceptionContainer(java.lang.RuntimeException("Don't throw me.")) + test.writeToParcel(parcel, 0) + + val bytes = parcel.marshall() + parcel.unmarshall(bytes, 0, bytes.size) + + val test2 = readFromParcel(parcel) +}