From 4ecedf2e3bcbe5be580df2c38840a6391ba82778 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Tue, 14 Apr 2020 10:17:10 +0200 Subject: [PATCH] Get rid of KTUsefulTestCase, improve stability of the tests --- plugins/scripting/scripting-compiler/build.gradle.kts | 5 ++--- .../kotlin/scripting/compiler/plugin/testUtil.kt | 10 ++++++++++ .../test/CollectScriptCompilationDependenciesTest.kt | 7 +++++-- .../compiler/test/ScriptCliCompilationTest.kt | 8 ++++++-- .../scripting/compiler/test/ScriptTemplateTest.kt | 4 ++-- .../kotlin/scripting/compiler/test/ScriptTest.kt | 4 ++-- 6 files changed, 27 insertions(+), 11 deletions(-) diff --git a/plugins/scripting/scripting-compiler/build.gradle.kts b/plugins/scripting/scripting-compiler/build.gradle.kts index 576bd25920a..34fbab96f6d 100644 --- a/plugins/scripting/scripting-compiler/build.gradle.kts +++ b/plugins/scripting/scripting-compiler/build.gradle.kts @@ -7,8 +7,6 @@ plugins { } dependencies { - testRuntimeOnly(intellijDep()) // Should come before compiler, because of "progarded" stuff needed for tests - compileOnly(project(":compiler:frontend")) compileOnly(project(":compiler:frontend.java")) compileOnly(project(":compiler:psi")) @@ -35,6 +33,7 @@ dependencies { testCompile(commonDep("junit:junit")) testImplementation(intellijCoreDep()) { includeJars("intellij-core") } + testRuntimeOnly(intellijDep()) { includeJars("jps-model") } } sourceSets { @@ -58,7 +57,7 @@ javadocJar() testsJar() -projectTest { +projectTest(parallel = true) { dependsOn(":dist") workingDir = rootDir systemProperty("kotlin.test.script.classpath", testSourceSet.output.classesDirs.joinToString(File.pathSeparator)) diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/testUtil.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/testUtil.kt index ebe6f102829..5e71f4fb518 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/testUtil.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/testUtil.kt @@ -223,4 +223,14 @@ internal fun withDisposable(body: (Disposable) -> R) { } } +class TestDisposable : Disposable { + @Volatile + var isDisposed = false + private set + + override fun dispose() { + isDisposed = true + } +} + diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CollectScriptCompilationDependenciesTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CollectScriptCompilationDependenciesTest.kt index a8150320509..bae4690676d 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CollectScriptCompilationDependenciesTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CollectScriptCompilationDependenciesTest.kt @@ -5,25 +5,28 @@ package org.jetbrains.kotlin.scripting.compiler.test +import com.intellij.openapi.Disposable import junit.framework.TestCase import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots import org.jetbrains.kotlin.script.loadScriptingPlugin +import org.jetbrains.kotlin.scripting.compiler.plugin.TestDisposable import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind -import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import java.io.File import kotlin.script.experimental.host.ScriptingHostConfiguration import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration private const val testDataPath = "plugins/scripting/scripting-compiler/testData/compiler/collectDependencies" -class CollectScriptCompilationDependenciesTest : KtUsefulTestCase() { +class CollectScriptCompilationDependenciesTest : TestCase() { + + protected val testRootDisposable: Disposable = TestDisposable() fun testCascadeImport() { runTest("imp_imp_leaf.req1.kts", listOf("imp_leaf.req1.kts", "leaf.req1.kts")) diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptCliCompilationTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptCliCompilationTest.kt index 30cef975bfa..50615b9dab6 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptCliCompilationTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptCliCompilationTest.kt @@ -5,19 +5,21 @@ package org.jetbrains.kotlin.scripting.compiler.test +import com.intellij.openapi.Disposable +import junit.framework.TestCase import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.script.loadScriptingPlugin +import org.jetbrains.kotlin.scripting.compiler.plugin.TestDisposable import org.jetbrains.kotlin.scripting.compiler.plugin.TestMessageCollector import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind -import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.jetbrains.kotlin.utils.PathUtil import org.junit.Assert import java.io.File @@ -29,7 +31,9 @@ import kotlin.script.experimental.jvm.* private const val testDataPath = "plugins/scripting/scripting-compiler/testData/cliCompilation" -class ScriptCliCompilationTest : KtUsefulTestCase() { +class ScriptCliCompilationTest : TestCase() { + + protected val testRootDisposable: Disposable = TestDisposable() fun testPrerequisites() { Assert.assertTrue(thisClasspath.isNotEmpty()) diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTemplateTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTemplateTest.kt index 989875d1658..8db6a7b4c2f 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTemplateTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTemplateTest.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.scripting.compiler.test import com.intellij.openapi.util.Disposer +import junit.framework.TestCase import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles @@ -24,7 +25,6 @@ import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotate import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind -import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs import org.junit.Assert @@ -48,7 +48,7 @@ import kotlin.script.templates.standard.ScriptTemplateWithArgs // TODO: the contetnts of this file should go into ScriptTest.kt and replace appropriate xml-based functionality, // as soon as the the latter is removed from the codebase -class ScriptTemplateTest : KtUsefulTestCase() { +class ScriptTemplateTest : TestCase() { fun testScriptWithParam() { val messageCollector = TestMessageCollector() val aClass = compileScript("fib.kts", ScriptWithIntParam::class, null, messageCollector = messageCollector) diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt index eab1c43df6e..174579f0f3e 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ScriptTest.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.scripting.compiler.test import com.intellij.openapi.util.Disposer +import junit.framework.TestCase import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles @@ -20,7 +21,6 @@ import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind -import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs import org.junit.Assert import java.io.File @@ -28,7 +28,7 @@ import java.net.URLClassLoader import kotlin.script.experimental.host.toScriptSource import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration -class ScriptTest : KtUsefulTestCase() { +class ScriptTest : TestCase() { fun testStandardScriptWithParams() { val aClass = compileScript("fib_std.kts", StandardScriptDefinition) Assert.assertNotNull(aClass)