1 package kotlinx.serialization.json 2 3 import kotlinx.serialization.* 4 import kotlinx.serialization.json.Json.Default.decodeFromString 5 import org.junit.* 6 import org.junit.Test 7 import java.io.ByteArrayInputStream 8 import java.io.ByteArrayOutputStream 9 import java.io.PrintWriter 10 import java.io.StringWriter 11 import kotlin.test.* 12 13 class MissingFieldExceptionWithPathTest { 14 15 @Test // Repro for #2212 testMfeIsNotReappliedMultipleTimesnull16 fun testMfeIsNotReappliedMultipleTimes() { 17 val inputMalformed = """{"title": "...","cast": [{}]""" 18 try { 19 Json.decodeFromString<Movie>(inputMalformed) 20 fail("Unreacheable state") 21 } catch (e: MissingFieldException) { 22 val fullStackTrace = e.stackTraceToString() 23 val i1 = fullStackTrace.toString().indexOf("at path") 24 val i2 = fullStackTrace.toString().lastIndexOf("at path") 25 assertEquals(i1, i2) 26 assertTrue(i1 != -1) 27 } 28 } 29 30 @Serializable 31 data class Movie( 32 val title: String, 33 val cast: List<Cast>, 34 ) 35 36 @Serializable 37 data class Cast( 38 val name: String 39 ) 40 } 41