Fix imported script functionality in JSR-223/REPL:
- setup compilation properly to take imported scripts into account - add compiled imported scripts into generated results = calculate ScriptLightVirtualFile path as relative - simplifies imported scripts location
This commit is contained in:
+17
@@ -1,4 +1,6 @@
|
||||
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
|
||||
import org.jetbrains.kotlin.mainKts.test.TEST_DATA_ROOT
|
||||
import org.jetbrains.kotlin.mainKts.test.captureOut
|
||||
import org.junit.Assert
|
||||
import org.junit.Test
|
||||
import javax.script.ScriptEngineManager
|
||||
@@ -32,5 +34,20 @@ class MainKtsJsr223Test {
|
||||
val res2 = engine.eval("z * x")
|
||||
Assert.assertEquals(42, res2)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testWithImport() {
|
||||
val engine = ScriptEngineManager().getEngineByExtension("main.kts")!!
|
||||
val out = captureOut {
|
||||
val res1 = engine.eval("""
|
||||
@file:Import("$TEST_DATA_ROOT/import-common.main.kts")
|
||||
@file:Import("$TEST_DATA_ROOT/import-middle.main.kts")
|
||||
sharedVar = sharedVar + 1
|
||||
println(sharedVar)
|
||||
""".trimIndent())
|
||||
Assert.assertNull(res1)
|
||||
}.lines()
|
||||
Assert.assertEquals(listOf("Hi from common", "Hi from middle", "5"), out)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -12,10 +12,10 @@ import java.io.File
|
||||
import java.io.PrintStream
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.host.toScriptSource
|
||||
import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
|
||||
import kotlin.script.experimental.jvmhost.createJvmCompilationConfigurationFromTemplate
|
||||
import kotlin.script.experimental.jvm.baseClassLoader
|
||||
import kotlin.script.experimental.jvm.jvm
|
||||
import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
|
||||
import kotlin.script.experimental.jvmhost.createJvmCompilationConfigurationFromTemplate
|
||||
|
||||
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
||||
|
||||
@@ -107,7 +107,7 @@ class MainKtsTest {
|
||||
}
|
||||
}
|
||||
|
||||
private fun captureOut(body: () -> Unit): String {
|
||||
internal fun captureOut(body: () -> Unit): String {
|
||||
val outStream = ByteArrayOutputStream()
|
||||
val prevOut = System.out
|
||||
System.setOut(PrintStream(outStream))
|
||||
|
||||
Reference in New Issue
Block a user