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))
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
return env
|
||||
}
|
||||
@@ -202,6 +218,8 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
||||
private fun defaultEnvironment(path: String): Map<String, File?> {
|
||||
val templateOutDir = File("${path}template").takeIf { it.isDirectory }?.let {
|
||||
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 }
|
||||
|
||||
@@ -20,14 +20,6 @@ import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
||||
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
||||
import java.io.File
|
||||
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(
|
||||
@@ -49,24 +41,7 @@ class FromTextTemplateProvider(
|
||||
override val id = "Test"
|
||||
override fun getDefinitions() = loadDefinitionsFromTemplates(
|
||||
templateClassNames = listOf("org.jetbrains.kotlin.idea.script.Template"),
|
||||
templateClasspath = emptyList(),
|
||||
templateClasspath = listOfNotNull(environment["template-classes"] as? File),
|
||||
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