From 0ade8140f760da35d0a42395183328077b56f554 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 18 Jun 2020 18:56:29 +0200 Subject: [PATCH] Add serialization plugin test with main-kts --- .../kotlin/mainKts/test/mainKtsIT.kt | 19 ++++++++++++++++++- .../hello-kotlinx-serialization.main.kts | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 libraries/tools/kotlin-main-kts-test/testData/hello-kotlinx-serialization.main.kts diff --git a/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsIT.kt b/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsIT.kt index 4ac171bb091..8cd8fcbfc39 100644 --- a/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsIT.kt +++ b/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsIT.kt @@ -10,6 +10,8 @@ import org.jetbrains.kotlin.mainKts.COMPILED_SCRIPTS_CACHE_DIR_PROPERTY import org.jetbrains.kotlin.scripting.compiler.plugin.runWithK2JVMCompiler import org.jetbrains.kotlin.scripting.compiler.plugin.runWithKotlinLauncherScript import org.jetbrains.kotlin.scripting.compiler.plugin.runWithKotlinc +import org.jetbrains.kotlin.utils.KotlinPaths +import org.jetbrains.kotlin.utils.PathUtil import org.junit.Assert import org.junit.Ignore import org.junit.Test @@ -60,6 +62,20 @@ class MainKtsIT { cache.deleteRecursively() } } + + @Test + fun testHelloSerialization() { + val paths = PathUtil.kotlinPathsForDistDirectory + val serializationPlugin = paths.jar(KotlinPaths.Jar.SerializationPlugin) + runWithKotlinc( + arrayOf( + "-Xplugin", serializationPlugin.absolutePath, + "-cp", paths.jar(KotlinPaths.Jar.MainKts).absolutePath, + "-script", File("$TEST_DATA_ROOT/hello-kotlinx-serialization.main.kts").absolutePath + ), + listOf("""\{"firstName":"James","lastName":"Bond"\}""", "User\\(firstName=James, lastName=Bond\\)") + ) + } } fun runWithKotlincAndMainKts( @@ -68,10 +84,11 @@ fun runWithKotlincAndMainKts( expectedExitCode: Int = 0, cacheDir: File? = null ) { + val paths = PathUtil.kotlinPathsForDistDirectory runWithKotlinc( scriptPath, expectedOutPatterns, expectedExitCode, classpath = listOf( - File("dist/kotlinc/lib/kotlin-main-kts.jar").also { + paths.jar(KotlinPaths.Jar.MainKts).also { Assert.assertTrue("kotlin-main-kts.jar not found, run dist task: ${it.absolutePath}", it.exists()) } ), diff --git a/libraries/tools/kotlin-main-kts-test/testData/hello-kotlinx-serialization.main.kts b/libraries/tools/kotlin-main-kts-test/testData/hello-kotlinx-serialization.main.kts new file mode 100644 index 00000000000..deb830e31a3 --- /dev/null +++ b/libraries/tools/kotlin-main-kts-test/testData/hello-kotlinx-serialization.main.kts @@ -0,0 +1,18 @@ + +@file:Repository("https://jcenter.bintray.com/") +@file:DependsOn("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0-1.4.0-dev-5730", options = ["transitive=false"]) + +import kotlinx.serialization.* +import kotlinx.serialization.json.* + +@Serializable +data class User(val firstName: String, val lastName: String) + +val json = Json(JsonConfiguration.Stable) + +val jsonData = json.stringify(User.serializer(), User("James", "Bond")) +println(jsonData) + +val obj = json.parse(User.serializer(), """{"firstName":"James", "lastName":"Bond"}""") +println(obj) +