Implement support for new script customizations in command line compiler
refactor and fix internals in many places to make it work add appropriate tests for main-kts case
This commit is contained in:
@@ -7,8 +7,10 @@ plugins {
|
||||
|
||||
dependencies {
|
||||
testCompile(project(":kotlin-main-kts"))
|
||||
testCompileOnly(project(":compiler:cli"))
|
||||
testCompile(project(":kotlin-scripting-jvm-host-embeddable"))
|
||||
testCompile(commonDep("junit"))
|
||||
testCompile(projectTests(":kotlin-scripting-compiler")) { isTransitive = false }
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
|
||||
+7
-3
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.mainKts.test
|
||||
|
||||
import junit.framework.Assert.*
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.runWithK2JVMCompiler
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
import java.io.InputStream
|
||||
@@ -71,9 +72,7 @@ class mainKtsIT {
|
||||
assertFalse("stderr thread not finished", stderrThread.isAlive)
|
||||
assertNull(stderrException.value)
|
||||
assertEquals(expectedOutPatterns.size, processOut.size)
|
||||
for (i in 0 until expectedOutPatterns.size) {
|
||||
val expectedPattern = expectedOutPatterns[i]
|
||||
val actualLine = processOut[i]
|
||||
for ((expectedPattern, actualLine) in expectedOutPatterns.zip(processOut)) {
|
||||
assertTrue(
|
||||
"line \"$actualLine\" do not match with expected pattern \"$expectedPattern\"",
|
||||
Regex(expectedPattern).matches(actualLine)
|
||||
@@ -92,4 +91,9 @@ class mainKtsIT {
|
||||
fun testResolveJunit() {
|
||||
runWithKotlinc("$TEST_DATA_ROOT/hello-resolve-junit.main.kts", listOf("Hello, World!"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testImport() {
|
||||
runWithK2JVMCompiler("$TEST_DATA_ROOT/import-test.main.kts", listOf("Hi from common", "Hi from middle", "sharedVar == 5"))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,11 @@ import kotlin.script.experimental.jvm.jvm
|
||||
import kotlin.script.experimental.jvm.updateClasspath
|
||||
|
||||
@Suppress("unused")
|
||||
@KotlinScript(fileExtension = "main.kts", compilationConfiguration = MainKtsScriptDefinition::class)
|
||||
@KotlinScript(
|
||||
fileExtension = "main.kts",
|
||||
compilationConfiguration = MainKtsScriptDefinition::class,
|
||||
evaluationConfiguration = MainKtsEvaluationConfiguration::class
|
||||
)
|
||||
abstract class MainKtsScript(val args: Array<String>)
|
||||
|
||||
object MainKtsScriptDefinition : ScriptCompilationConfiguration(
|
||||
@@ -40,6 +44,12 @@ object MainKtsScriptDefinition : ScriptCompilationConfiguration(
|
||||
}
|
||||
})
|
||||
|
||||
object MainKtsEvaluationConfiguration : ScriptEvaluationConfiguration(
|
||||
{
|
||||
scriptsInstancesSharing(true)
|
||||
}
|
||||
)
|
||||
|
||||
class MainKtsConfigurator : RefineScriptCompilationConfigurationHandler {
|
||||
private val resolver = FilesAndIvyResolver()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user