Add serialization plugin test with main-kts

This commit is contained in:
Ilya Chernikov
2020-06-18 18:56:29 +02:00
parent dbb47cf48e
commit 0ade8140f7
2 changed files with 36 additions and 1 deletions
@@ -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())
}
),
@@ -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)