From e7c99cd4943fd5ac8b6cfe27983637daf683eb48 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Fri, 24 May 2019 12:27:41 +0200 Subject: [PATCH] Fix scripting-compiler tests, add them to the global scriptingTest task --- build.gradle.kts | 1 + .../jvm/jvmScriptingHostConfiguration.kt | 37 ++++++++++++++++--- .../plugin/ScriptingCompilerPluginTest.kt | 7 ++-- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 1affb01a3f0..597ac14e23f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -532,6 +532,7 @@ tasks { create("scriptingTest") { dependsOn("dist") dependsOn(":kotlin-script-util:test") + dependsOn(":kotlin-scripting-compiler:test") dependsOn(":kotlin-scripting-jvm-host-test:test") dependsOn(":kotlin-scripting-jsr223-test:test") dependsOn(":kotlin-scripting-jvm-host-test:embeddableTest") diff --git a/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/jvmScriptingHostConfiguration.kt b/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/jvmScriptingHostConfiguration.kt index 20142789777..d6b02d8ad96 100644 --- a/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/jvmScriptingHostConfiguration.kt +++ b/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/jvmScriptingHostConfiguration.kt @@ -31,14 +31,22 @@ val ScriptingHostConfigurationKeys.jvm val defaultJvmScriptingHostConfiguration get() = ScriptingHostConfiguration { - getScriptingClass(JvmGetScriptingClass) + getScriptingClass(JvmGetScriptingClass()) } -object JvmGetScriptingClass : GetScriptingClass, Serializable { +class JvmGetScriptingClass : GetScriptingClass, Serializable { + @Transient private var dependencies: List? = null + + @Transient private var classLoader: ClassLoader? = null - private var baseClassLoaderIsInitialized = false + + @Transient + // TODO: find out whether Transient fields are initialized on deserialization and if so, convert back to not-nullable val + private var baseClassLoaderIsInitialized: Boolean? = null + + @Transient private var baseClassLoader: ClassLoader? = null @Synchronized @@ -62,7 +70,7 @@ object JvmGetScriptingClass : GetScriptingClass, Serializable { ) } - if (!baseClassLoaderIsInitialized) { + if (baseClassLoaderIsInitialized != true) { baseClassLoader = contextClassloader baseClassLoaderIsInitialized = true } @@ -91,6 +99,23 @@ object JvmGetScriptingClass : GetScriptingClass, Serializable { } } - @JvmStatic - private val serialVersionUID = 1L + override fun equals(other: Any?): Boolean = + when { + other === this -> true + other !is JvmGetScriptingClass -> false + else -> { + other.dependencies == dependencies && + (other.classLoader == null || classLoader == null || other.classLoader == classLoader) && + (other.baseClassLoader == null || baseClassLoader == null || other.baseClassLoader == baseClassLoader) + } + } + + + override fun hashCode(): Int { + return dependencies.hashCode() + 23 * classLoader.hashCode() + 37 * baseClassLoader.hashCode() + } + + companion object { + private const val serialVersionUID = 1L + } } diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerPluginTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerPluginTest.kt index 51315cd8c26..9827d64c68a 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerPluginTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerPluginTest.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys import org.jetbrains.kotlin.scripting.definitions.SCRIPT_DEFINITION_MARKERS_PATH import org.jetbrains.kotlin.scripting.definitions.discoverScriptTemplatesInClasspath import org.jetbrains.kotlin.scripting.definitions.loadScriptTemplatesFromClasspath +import org.jetbrains.kotlin.scripting.definitions.reporter import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestCaseWithTmpdir @@ -115,7 +116,7 @@ class ScriptingCompilerPluginTest : TestCaseWithTmpdir() { loadScriptTemplatesFromClasspath( listOf("TestScriptWithReceivers", "TestScriptWithSimpleEnvVars"), - listOf(defsOut), emptyList(), this::class.java.classLoader, emptyMap(), messageCollector + listOf(defsOut), emptyList(), this::class.java.classLoader, emptyMap(), messageCollector.reporter ).toList() for (def in defClasses) { @@ -141,7 +142,7 @@ class ScriptingCompilerPluginTest : TestCaseWithTmpdir() { listOf(defsOut), this::class.java.classLoader, emptyMap(), - messageCollector + messageCollector.reporter ) assertTrue(messageCollector.messages.isEmpty()) { @@ -212,7 +213,7 @@ class ScriptingCompilerPluginTest : TestCaseWithTmpdir() { listOf(defsOut), this::class.java.classLoader, emptyMap(), - messageCollector + messageCollector.reporter ).toList() assertTrue(