[K/N] Fix disposable leak in ExtTestCaseGroupProvider.isIgnoredTarget
- `isIgnoredTarget` creates a new `ExtTestDataFileStructureFactory`, which requests a shared application environment via `createPsiFactory`. ^KT-64099
This commit is contained in:
committed by
Space Team
parent
24a2f72a6b
commit
145876a235
+9
-4
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.konan.test.blackbox.support.group
|
||||
import com.intellij.core.CoreApplicationEnvironment
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.pom.PomModel
|
||||
import com.intellij.pom.core.impl.PomModelImpl
|
||||
import com.intellij.pom.tree.TreeAspect
|
||||
@@ -608,7 +609,7 @@ private class ExtTestDataFileSettings(
|
||||
private typealias SharedModuleGenerator = (sharedModulesDir: File) -> TestModule.Shared?
|
||||
private typealias SharedModuleCache = (moduleName: String, generator: SharedModuleGenerator) -> TestModule.Shared?
|
||||
|
||||
private class ExtTestDataFileStructureFactory(parentDisposable: Disposable?) : TestDisposable(parentDisposable) {
|
||||
private class ExtTestDataFileStructureFactory(parentDisposable: Disposable) : TestDisposable(parentDisposable) {
|
||||
private val psiFactory = createPsiFactory(parentDisposable = this)
|
||||
|
||||
inner class ExtTestDataFileStructure(originalTestDataFile: File, sourceTransformers: ExternalSourceTransformers) {
|
||||
@@ -890,9 +891,13 @@ internal fun isDisabledNative(pipelineType: PipelineType, directives: Directives
|
||||
}
|
||||
|
||||
internal fun Settings.isIgnoredTarget(testDataFile: File): Boolean {
|
||||
val extTestDataFileStructure =
|
||||
ExtTestDataFileStructureFactory(parentDisposable = null).ExtTestDataFileStructure(testDataFile, emptyList())
|
||||
return isIgnoredTarget(extTestDataFileStructure.directives)
|
||||
val disposable = Disposer.newDisposable("Disposable for ExtTestCaseGroupProvider.isIgnoredTarget")
|
||||
try {
|
||||
val extTestDataFileStructure = ExtTestDataFileStructureFactory(disposable).ExtTestDataFileStructure(testDataFile, emptyList())
|
||||
return isIgnoredTarget(extTestDataFileStructure.directives)
|
||||
} finally {
|
||||
Disposer.dispose(disposable)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun Settings.isIgnoredTarget(directives: Directives): Boolean {
|
||||
|
||||
Reference in New Issue
Block a user