Tests: rewrite some AbstractScriptConfigurationTest to the new script infrastructure
This commit is contained in:
+50
-18
@@ -1,23 +1,55 @@
|
|||||||
package org.jetbrains.kotlin.idea.script
|
package org.jetbrains.kotlin.idea.script
|
||||||
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.dependencies.*
|
import kotlin.script.experimental.annotations.KotlinScript
|
||||||
import kotlin.script.experimental.dependencies.*
|
import kotlin.script.experimental.api.*
|
||||||
import kotlin.script.experimental.location.*
|
import kotlin.script.experimental.host.ScriptingHostConfiguration
|
||||||
import kotlin.script.templates.ScriptTemplateDefinition
|
import kotlin.script.experimental.host.ScriptingHostConfigurationKeys
|
||||||
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
|
import kotlin.script.experimental.jvm.dependenciesFromClassContext
|
||||||
|
import kotlin.script.experimental.jvm.jdkHome
|
||||||
|
import kotlin.script.experimental.jvm.jvm
|
||||||
|
import kotlin.script.experimental.util.PropertiesCollection
|
||||||
|
|
||||||
class FromTextDependenciesResolver : DependenciesResolver {
|
@KotlinScript(
|
||||||
@Suppress("UNCHECKED_CAST")
|
displayName = "Definition for tests",
|
||||||
override fun resolve(scriptContents: ScriptContents, environment: Environment): DependenciesResolver.ResolveResult {
|
fileExtension = "kts",
|
||||||
return ScriptDependencies(
|
compilationConfiguration = TemplateDefinition::class
|
||||||
javaHome = environment["javaHome"] as? File,
|
)
|
||||||
classpath = (environment["classpath"] as? List<File>).orEmpty(),
|
open class Template(val args: Array<String>)
|
||||||
imports = (environment["imports"] as? List<String>).orEmpty(),
|
|
||||||
sources = (environment["sources"] as? List<File>).orEmpty()
|
val ScriptingHostConfigurationKeys.getEnvironment by PropertiesCollection.key<() -> Map<String, Any?>?>()
|
||||||
).asSuccess()
|
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
object TemplateDefinition : ScriptCompilationConfiguration(
|
||||||
|
{
|
||||||
|
jvm {
|
||||||
|
dependenciesFromClassContext(TemplateDefinition::class)
|
||||||
|
}
|
||||||
|
ide {
|
||||||
|
acceptedLocations(ScriptAcceptedLocation.Everywhere)
|
||||||
|
}
|
||||||
|
refineConfiguration {
|
||||||
|
beforeCompiling { context ->
|
||||||
|
val environment = context.compilationConfiguration[ScriptCompilationConfiguration.hostConfiguration]?.let {
|
||||||
|
it[ScriptingHostConfiguration.getEnvironment]?.invoke()
|
||||||
|
}.orEmpty()
|
||||||
|
|
||||||
|
context.compilationConfiguration.with {
|
||||||
|
(environment["javaHome"] as? File)?.let {
|
||||||
|
jvm.jdkHome(it)
|
||||||
|
}
|
||||||
|
(environment["imports"] as? List<String>)?.let {
|
||||||
|
defaultImports(it)
|
||||||
|
}
|
||||||
|
(environment["classpath"] as? List<File>)?.let {
|
||||||
|
dependencies(JvmDependency(it))
|
||||||
|
}
|
||||||
|
(environment["sources"] as? List<File>)?.let {
|
||||||
|
ide.dependenciesSources(JvmDependency(it))
|
||||||
|
}
|
||||||
|
}.asSuccess()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
)
|
||||||
|
|
||||||
@ScriptExpectedLocations([ScriptExpectedLocation.Everywhere])
|
|
||||||
@ScriptTemplateDefinition(FromTextDependenciesResolver::class, scriptFilePattern = "script.kts")
|
|
||||||
open class Template
|
|
||||||
Vendored
+32
-19
@@ -1,24 +1,37 @@
|
|||||||
package custom.scriptDefinition
|
package custom.scriptDefinition
|
||||||
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.dependencies.*
|
import kotlin.script.experimental.annotations.KotlinScript
|
||||||
import kotlin.script.experimental.dependencies.*
|
import kotlin.script.experimental.api.*
|
||||||
import kotlin.script.templates.ScriptTemplateDefinition
|
import kotlin.script.experimental.host.ScriptingHostConfiguration
|
||||||
import kotlin.script.experimental.location.*
|
import kotlin.script.experimental.host.ScriptingHostConfigurationKeys
|
||||||
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
|
import kotlin.script.experimental.util.PropertiesCollection
|
||||||
|
|
||||||
class TestDependenciesResolver : DependenciesResolver {
|
@KotlinScript(
|
||||||
override fun resolve(
|
fileExtension = "kts",
|
||||||
scriptContents: ScriptContents,
|
compilationConfiguration = TemplateDefinition::class
|
||||||
environment: Environment
|
)
|
||||||
): DependenciesResolver.ResolveResult {
|
open class Template(val args: Array<String>)
|
||||||
return DependenciesResolver.ResolveResult.Success(
|
|
||||||
ScriptDependencies(
|
val ScriptingHostConfigurationKeys.getEnvironment by PropertiesCollection.key<() -> Map<String, Any?>?>()
|
||||||
classpath = listOf(environment["template-classes"] as File)
|
|
||||||
)
|
object TemplateDefinition : ScriptCompilationConfiguration(
|
||||||
)
|
{
|
||||||
|
refineConfiguration {
|
||||||
|
beforeCompiling { context ->
|
||||||
|
val environment =
|
||||||
|
context.compilationConfiguration[ScriptCompilationConfiguration.hostConfiguration]?.let {
|
||||||
|
it[ScriptingHostConfiguration.getEnvironment]?.invoke()
|
||||||
|
}.orEmpty()
|
||||||
|
|
||||||
|
context.compilationConfiguration.with {
|
||||||
|
dependencies(JvmDependency(environment["template-classes"] as File))
|
||||||
|
}.asSuccess()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ide {
|
||||||
|
acceptedLocations(ScriptAcceptedLocation.Everywhere)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
)
|
||||||
|
|
||||||
@ScriptExpectedLocations([ScriptExpectedLocation.Everywhere])
|
|
||||||
@ScriptTemplateDefinition(TestDependenciesResolver::class, scriptFilePattern = "script.kts")
|
|
||||||
open class Template
|
|
||||||
@@ -136,6 +136,8 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
|||||||
createFileAndSyncDependencies(mainScriptFile)
|
createFileAndSyncDependencies(mainScriptFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val oldScripClasspath: String? = System.getProperty("kotlin.script.classpath")
|
||||||
|
|
||||||
override fun setUp() {
|
override fun setUp() {
|
||||||
super.setUp()
|
super.setUp()
|
||||||
ApplicationManager.getApplication().isScriptDependenciesUpdaterDisabled = true
|
ApplicationManager.getApplication().isScriptDependenciesUpdaterDisabled = true
|
||||||
@@ -143,6 +145,9 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
|||||||
|
|
||||||
override fun tearDown() {
|
override fun tearDown() {
|
||||||
ApplicationManager.getApplication().isScriptDependenciesUpdaterDisabled = false
|
ApplicationManager.getApplication().isScriptDependenciesUpdaterDisabled = false
|
||||||
|
|
||||||
|
System.setProperty("kotlin.script.classpath", oldScripClasspath ?: "")
|
||||||
|
|
||||||
super.tearDown()
|
super.tearDown()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,6 +222,10 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
|
|||||||
compileLibToDir(it, *scriptClasspath())
|
compileLibToDir(it, *scriptClasspath())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (templateOutDir != null) {
|
||||||
|
System.setProperty("kotlin.script.classpath", templateOutDir.path)
|
||||||
|
}
|
||||||
|
|
||||||
val libSrcDir = File("${path}lib").takeIf { it.isDirectory }
|
val libSrcDir = File("${path}lib").takeIf { it.isDirectory }
|
||||||
|
|
||||||
val libClasses = libSrcDir?.let { compileLibToDir(it) }
|
val libClasses = libSrcDir?.let { compileLibToDir(it) }
|
||||||
|
|||||||
Reference in New Issue
Block a user