From 3497809ebda45691376c674827968401fcf2f2ff Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Tue, 5 Dec 2023 20:55:17 +0100 Subject: [PATCH] [Test] Add missing disposal for test root disposables ^KT-64099 --- .../incremental/AbstractInvalidationTest.kt | 16 +++++++++++----- .../CollectScriptCompilationDependenciesTest.kt | 13 +++++++++++-- .../compiler/test/CompileTimeFibonacciTest.kt | 10 ++++++++++ .../compiler/test/ConstructAnnotationTest.kt | 10 ++++++++++ .../compiler/test/ScriptCliCompilationTest.kt | 11 ++++++++++- 5 files changed, 52 insertions(+), 8 deletions(-) diff --git a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt index d2082939cc9..09f4cbdc4ea 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.incremental +import com.intellij.openapi.util.Disposer import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.openapi.vfs.local.CoreLocalFileSystem @@ -81,12 +82,17 @@ abstract class AbstractInvalidationTest( } private val zipAccessor = ZipFileSystemCacheableAccessor(2) + + private val rootDisposable = TestDisposable("${AbstractInvalidationTest::class.simpleName}.rootDisposable") + protected val environment = - KotlinCoreEnvironment.createForParallelTests( - TestDisposable("${AbstractInvalidationTest::class.simpleName}.rootDisposable"), - CompilerConfiguration(), - EnvironmentConfigFiles.JS_CONFIG_FILES, - ) + KotlinCoreEnvironment.createForParallelTests(rootDisposable, CompilerConfiguration(), EnvironmentConfigFiles.JS_CONFIG_FILES) + + @AfterEach + protected fun disposeEnvironment() { + // The test is run with `Lifecycle.PER_METHOD` (as it's the default), so the disposable needs to be disposed after each test. + Disposer.dispose(rootDisposable) + } @AfterEach protected fun clearZipAccessor() { 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 eb0038bd7c4..e09441ad610 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 @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.scripting.compiler.test import com.intellij.openapi.Disposable +import com.intellij.openapi.util.Disposer +import com.intellij.util.ThrowableRunnable import junit.framework.TestCase import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles @@ -20,6 +22,7 @@ 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.RunAll import java.io.File import kotlin.script.experimental.host.ScriptingHostConfiguration import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration @@ -27,10 +30,16 @@ import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration private const val testDataPath = "plugins/scripting/scripting-compiler/testData/compiler/collectDependencies" class CollectScriptCompilationDependenciesTest : TestCase() { - - protected val testRootDisposable: Disposable = + private val testRootDisposable: Disposable = TestDisposable("${CollectScriptCompilationDependenciesTest::class.simpleName}.testRootDisposable") + override fun tearDown() { + RunAll( + ThrowableRunnable { Disposer.dispose(testRootDisposable) }, + ThrowableRunnable { super.tearDown() }, + ) + } + 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/CompileTimeFibonacciTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CompileTimeFibonacciTest.kt index 07f3fd9d6e6..fa5c02eb885 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CompileTimeFibonacciTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/CompileTimeFibonacciTest.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.scripting.compiler.test import com.intellij.openapi.Disposable +import com.intellij.openapi.util.Disposer +import com.intellij.util.ThrowableRunnable import junit.framework.TestCase import kotlinx.coroutines.runBlocking import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles @@ -20,6 +22,7 @@ import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind +import org.jetbrains.kotlin.test.testFramework.RunAll import org.junit.Assert import java.io.File import java.nio.file.Files @@ -36,6 +39,13 @@ private const val testDataPath = "plugins/scripting/scripting-compiler/testData/ class CompileTimeFibonacciTest : TestCase() { private val testRootDisposable: Disposable = TestDisposable("${CompileTimeFibonacciTest::class.simpleName}.testRootDisposable") + override fun tearDown() { + RunAll( + ThrowableRunnable { Disposer.dispose(testRootDisposable) }, + ThrowableRunnable { super.tearDown() }, + ) + } + fun testFibonacciWithSupportedNumbersImplementsTheCorrectConstants() { val outputLines = runScript("supported.fib.kts") .valueOr { failure -> diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ConstructAnnotationTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ConstructAnnotationTest.kt index a857d5d0fd9..c402e42fdf2 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ConstructAnnotationTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/test/ConstructAnnotationTest.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.scripting.compiler.test import com.intellij.openapi.Disposable +import com.intellij.openapi.util.Disposer +import com.intellij.util.ThrowableRunnable import junit.framework.TestCase import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles @@ -21,6 +23,7 @@ import org.jetbrains.kotlin.scripting.resolve.getScriptCollectedData import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind +import org.jetbrains.kotlin.test.testFramework.RunAll import java.io.File import kotlin.reflect.KClass import kotlin.script.experimental.api.* @@ -42,6 +45,13 @@ private annotation class AnnotationWithVarArgAndArray(vararg val options: String class ConstructAnnotationTest : TestCase() { private val testRootDisposable: Disposable = TestDisposable("${ConstructAnnotationTest::class.simpleName}.testRootDisposable") + override fun tearDown() { + RunAll( + ThrowableRunnable { Disposer.dispose(testRootDisposable) }, + ThrowableRunnable { super.tearDown() }, + ) + } + fun testAnnotationEmptyVarArg() { val annotations = annotations("TestAnnotationEmptyVarArg.kts", TestAnnotation::class) .valueOrThrow() 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 dc3f68a55e1..8dc7510fa87 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 @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.scripting.compiler.test import com.intellij.openapi.Disposable +import com.intellij.openapi.util.Disposer +import com.intellij.util.ThrowableRunnable import junit.framework.TestCase import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY import org.jetbrains.kotlin.cli.common.ExitCode @@ -21,6 +23,7 @@ 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.RunAll import org.jetbrains.kotlin.utils.PathUtil import org.junit.Assert import java.io.File @@ -34,8 +37,14 @@ import kotlin.script.experimental.jvm.* private const val testDataPath = "plugins/scripting/scripting-compiler/testData/cliCompilation" class ScriptCliCompilationTest : TestCase() { + private val testRootDisposable: Disposable = TestDisposable("${ScriptCliCompilationTest::class.simpleName}.testRootDisposable") - protected val testRootDisposable: Disposable = TestDisposable("${ScriptCliCompilationTest::class.simpleName}.testRootDisposable") + override fun tearDown() { + RunAll( + ThrowableRunnable { Disposer.dispose(testRootDisposable) }, + ThrowableRunnable { super.tearDown() }, + ) + } fun testPrerequisites() { Assert.assertTrue(thisClasspath.isNotEmpty())