Fix AbstractScriptConfigurationTest
Add dependency on script runtime for module. Provide default test script template thought template-classpath.
This commit is contained in:
committed by
Ilya Chernikov
parent
790188120a
commit
5741f81f25
@@ -0,0 +1,22 @@
|
|||||||
|
package org.jetbrains.kotlin.idea.script
|
||||||
|
|
||||||
|
import java.io.File
|
||||||
|
import kotlin.script.dependencies.*
|
||||||
|
import kotlin.script.experimental.dependencies.*
|
||||||
|
import kotlin.script.experimental.location.*
|
||||||
|
import kotlin.script.templates.ScriptTemplateDefinition
|
||||||
|
|
||||||
|
class FromTextDependenciesResolver : AsyncDependenciesResolver {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
suspend override fun resolveAsync(scriptContents: ScriptContents, environment: Environment): DependenciesResolver.ResolveResult {
|
||||||
|
return ScriptDependencies(
|
||||||
|
classpath = (environment["classpath"] as? List<File>).orEmpty(),
|
||||||
|
imports = (environment["imports"] as? List<String>).orEmpty(),
|
||||||
|
sources = (environment["sources"] as? List<File>).orEmpty()
|
||||||
|
).asSuccess()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ScriptExpectedLocations([ScriptExpectedLocation.Everywhere])
|
||||||
|
@ScriptTemplateDefinition(FromTextDependenciesResolver::class, scriptFilePattern = "script.kts")
|
||||||
|
open class Template
|
||||||
@@ -157,6 +157,24 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
|||||||
module.addDependency(projectLibrary("sharedLib", classesRoot = sharedLib))
|
module.addDependency(projectLibrary("sharedLib", classesRoot = sharedLib))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (module != null) {
|
||||||
|
module.addDependency(
|
||||||
|
projectLibrary(
|
||||||
|
"script-runtime",
|
||||||
|
classesRoot = VfsUtil.findFileByIoFile(PathUtil.kotlinPathsForDistDirectory.scriptRuntimePath, true)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if (environment["template-classes"] != null) {
|
||||||
|
module.addDependency(
|
||||||
|
projectLibrary(
|
||||||
|
"script-template-library",
|
||||||
|
classesRoot = VfsUtil.findFileByIoFile(environment["template-classes"] as File, true)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
createFileAndSyncDependencies(mainScriptFile)
|
createFileAndSyncDependencies(mainScriptFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,9 +210,7 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (env[useDefaultTemplate] == true && defaultEnvironment["template-classes"] != null) {
|
|
||||||
error("Script configuration should be defined by either '$useDefaultTemplate' clause or via template in 'template' directory")
|
|
||||||
}
|
|
||||||
env.putAll(defaultEnvironment)
|
env.putAll(defaultEnvironment)
|
||||||
return env
|
return env
|
||||||
}
|
}
|
||||||
@@ -202,6 +218,8 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
|||||||
private fun defaultEnvironment(path: String): Map<String, File?> {
|
private fun defaultEnvironment(path: String): Map<String, File?> {
|
||||||
val templateOutDir = File("${path}template").takeIf { it.isDirectory }?.let {
|
val templateOutDir = File("${path}template").takeIf { it.isDirectory }?.let {
|
||||||
compileLibToDir(it, PathUtil.kotlinPathsForDistDirectory.scriptRuntimePath.path)
|
compileLibToDir(it, PathUtil.kotlinPathsForDistDirectory.scriptRuntimePath.path)
|
||||||
|
} ?: File("idea/testData/script/definition/defaultTemplate").takeIf { it.isDirectory }?.let {
|
||||||
|
compileLibToDir(it, PathUtil.kotlinPathsForDistDirectory.scriptRuntimePath.path)
|
||||||
}
|
}
|
||||||
|
|
||||||
val libSrcDir = File("${path}lib").takeIf { it.isDirectory }
|
val libSrcDir = File("${path}lib").takeIf { it.isDirectory }
|
||||||
|
|||||||
@@ -20,14 +20,6 @@ import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
|||||||
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.dependencies.Environment
|
import kotlin.script.dependencies.Environment
|
||||||
import kotlin.script.dependencies.ScriptContents
|
|
||||||
import kotlin.script.experimental.dependencies.AsyncDependenciesResolver
|
|
||||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
|
||||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
|
||||||
import kotlin.script.experimental.dependencies.asSuccess
|
|
||||||
import kotlin.script.experimental.location.ScriptExpectedLocation
|
|
||||||
import kotlin.script.experimental.location.ScriptExpectedLocations
|
|
||||||
import kotlin.script.templates.ScriptTemplateDefinition
|
|
||||||
|
|
||||||
|
|
||||||
class CustomScriptTemplateProvider(
|
class CustomScriptTemplateProvider(
|
||||||
@@ -49,24 +41,7 @@ class FromTextTemplateProvider(
|
|||||||
override val id = "Test"
|
override val id = "Test"
|
||||||
override fun getDefinitions() = loadDefinitionsFromTemplates(
|
override fun getDefinitions() = loadDefinitionsFromTemplates(
|
||||||
templateClassNames = listOf("org.jetbrains.kotlin.idea.script.Template"),
|
templateClassNames = listOf("org.jetbrains.kotlin.idea.script.Template"),
|
||||||
templateClasspath = emptyList(),
|
templateClasspath = listOfNotNull(environment["template-classes"] as? File),
|
||||||
environment = environment
|
environment = environment
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class FromTextDependenciesResolver : AsyncDependenciesResolver {
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
suspend override fun resolveAsync(scriptContents: ScriptContents, environment: Environment): DependenciesResolver.ResolveResult {
|
|
||||||
return ScriptDependencies(
|
|
||||||
classpath = (environment["classpath"] as? List<File>).orEmpty(),
|
|
||||||
imports = (environment["imports"] as? List<String>).orEmpty(),
|
|
||||||
sources = (environment["sources"] as? List<File>).orEmpty()
|
|
||||||
).asSuccess()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ScriptExpectedLocations([ScriptExpectedLocation.Everywhere])
|
|
||||||
@Suppress("unused")
|
|
||||||
@ScriptTemplateDefinition(FromTextDependenciesResolver::class, scriptFilePattern = "script.kts")
|
|
||||||
class Template
|
|
||||||
Reference in New Issue
Block a user