Get rid of KTUsefulTestCase, improve stability of the tests

This commit is contained in:
Ilya Chernikov
2020-04-14 10:17:10 +02:00
parent 850681f5e3
commit 4ecedf2e3b
6 changed files with 27 additions and 11 deletions
@@ -7,8 +7,6 @@ plugins {
} }
dependencies { dependencies {
testRuntimeOnly(intellijDep()) // Should come before compiler, because of "progarded" stuff needed for tests
compileOnly(project(":compiler:frontend")) compileOnly(project(":compiler:frontend"))
compileOnly(project(":compiler:frontend.java")) compileOnly(project(":compiler:frontend.java"))
compileOnly(project(":compiler:psi")) compileOnly(project(":compiler:psi"))
@@ -35,6 +33,7 @@ dependencies {
testCompile(commonDep("junit:junit")) testCompile(commonDep("junit:junit"))
testImplementation(intellijCoreDep()) { includeJars("intellij-core") } testImplementation(intellijCoreDep()) { includeJars("intellij-core") }
testRuntimeOnly(intellijDep()) { includeJars("jps-model") }
} }
sourceSets { sourceSets {
@@ -58,7 +57,7 @@ javadocJar()
testsJar() testsJar()
projectTest { projectTest(parallel = true) {
dependsOn(":dist") dependsOn(":dist")
workingDir = rootDir workingDir = rootDir
systemProperty("kotlin.test.script.classpath", testSourceSet.output.classesDirs.joinToString(File.pathSeparator)) systemProperty("kotlin.test.script.classpath", testSourceSet.output.classesDirs.joinToString(File.pathSeparator))
@@ -223,4 +223,14 @@ internal fun <R> withDisposable(body: (Disposable) -> R) {
} }
} }
class TestDisposable : Disposable {
@Volatile
var isDisposed = false
private set
override fun dispose() {
isDisposed = true
}
}
@@ -5,25 +5,28 @@
package org.jetbrains.kotlin.scripting.compiler.test package org.jetbrains.kotlin.scripting.compiler.test
import com.intellij.openapi.Disposable
import junit.framework.TestCase import junit.framework.TestCase
import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
import org.jetbrains.kotlin.script.loadScriptingPlugin 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.configuration.ScriptingConfigurationKeys
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import java.io.File import java.io.File
import kotlin.script.experimental.host.ScriptingHostConfiguration import kotlin.script.experimental.host.ScriptingHostConfiguration
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
private const val testDataPath = "plugins/scripting/scripting-compiler/testData/compiler/collectDependencies" private const val testDataPath = "plugins/scripting/scripting-compiler/testData/compiler/collectDependencies"
class CollectScriptCompilationDependenciesTest : KtUsefulTestCase() { class CollectScriptCompilationDependenciesTest : TestCase() {
protected val testRootDisposable: Disposable = TestDisposable()
fun testCascadeImport() { fun testCascadeImport() {
runTest("imp_imp_leaf.req1.kts", listOf("imp_leaf.req1.kts", "leaf.req1.kts")) runTest("imp_imp_leaf.req1.kts", listOf("imp_leaf.req1.kts", "leaf.req1.kts"))
@@ -5,19 +5,21 @@
package org.jetbrains.kotlin.scripting.compiler.test 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.CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY
import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.ExitCode
import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.script.loadScriptingPlugin 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.compiler.plugin.TestMessageCollector
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.PathUtil
import org.junit.Assert import org.junit.Assert
import java.io.File import java.io.File
@@ -29,7 +31,9 @@ import kotlin.script.experimental.jvm.*
private const val testDataPath = "plugins/scripting/scripting-compiler/testData/cliCompilation" private const val testDataPath = "plugins/scripting/scripting-compiler/testData/cliCompilation"
class ScriptCliCompilationTest : KtUsefulTestCase() { class ScriptCliCompilationTest : TestCase() {
protected val testRootDisposable: Disposable = TestDisposable()
fun testPrerequisites() { fun testPrerequisites() {
Assert.assertTrue(thisClasspath.isNotEmpty()) Assert.assertTrue(thisClasspath.isNotEmpty())
@@ -7,6 +7,7 @@
package org.jetbrains.kotlin.scripting.compiler.test package org.jetbrains.kotlin.scripting.compiler.test
import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.Disposer
import junit.framework.TestCase
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.common.messages.*
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles 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.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.PathUtil
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
import org.junit.Assert 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, // 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 // as soon as the the latter is removed from the codebase
class ScriptTemplateTest : KtUsefulTestCase() { class ScriptTemplateTest : TestCase() {
fun testScriptWithParam() { fun testScriptWithParam() {
val messageCollector = TestMessageCollector() val messageCollector = TestMessageCollector()
val aClass = compileScript("fib.kts", ScriptWithIntParam::class, null, messageCollector = messageCollector) val aClass = compileScript("fib.kts", ScriptWithIntParam::class, null, messageCollector = messageCollector)
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.scripting.compiler.test package org.jetbrains.kotlin.scripting.compiler.test
import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.Disposer
import junit.framework.TestCase
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.common.messages.*
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles 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.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
import org.junit.Assert import org.junit.Assert
import java.io.File import java.io.File
@@ -28,7 +28,7 @@ import java.net.URLClassLoader
import kotlin.script.experimental.host.toScriptSource import kotlin.script.experimental.host.toScriptSource
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
class ScriptTest : KtUsefulTestCase() { class ScriptTest : TestCase() {
fun testStandardScriptWithParams() { fun testStandardScriptWithParams() {
val aClass = compileScript("fib_std.kts", StandardScriptDefinition) val aClass = compileScript("fib_std.kts", StandardScriptDefinition)
Assert.assertNotNull(aClass) Assert.assertNotNull(aClass)