[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.core.CoreApplicationEnvironment
|
||||||
import com.intellij.mock.MockProject
|
import com.intellij.mock.MockProject
|
||||||
import com.intellij.openapi.Disposable
|
import com.intellij.openapi.Disposable
|
||||||
|
import com.intellij.openapi.util.Disposer
|
||||||
import com.intellij.pom.PomModel
|
import com.intellij.pom.PomModel
|
||||||
import com.intellij.pom.core.impl.PomModelImpl
|
import com.intellij.pom.core.impl.PomModelImpl
|
||||||
import com.intellij.pom.tree.TreeAspect
|
import com.intellij.pom.tree.TreeAspect
|
||||||
@@ -608,7 +609,7 @@ private class ExtTestDataFileSettings(
|
|||||||
private typealias SharedModuleGenerator = (sharedModulesDir: File) -> TestModule.Shared?
|
private typealias SharedModuleGenerator = (sharedModulesDir: File) -> TestModule.Shared?
|
||||||
private typealias SharedModuleCache = (moduleName: String, generator: SharedModuleGenerator) -> 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)
|
private val psiFactory = createPsiFactory(parentDisposable = this)
|
||||||
|
|
||||||
inner class ExtTestDataFileStructure(originalTestDataFile: File, sourceTransformers: ExternalSourceTransformers) {
|
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 {
|
internal fun Settings.isIgnoredTarget(testDataFile: File): Boolean {
|
||||||
val extTestDataFileStructure =
|
val disposable = Disposer.newDisposable("Disposable for ExtTestCaseGroupProvider.isIgnoredTarget")
|
||||||
ExtTestDataFileStructureFactory(parentDisposable = null).ExtTestDataFileStructure(testDataFile, emptyList())
|
try {
|
||||||
return isIgnoredTarget(extTestDataFileStructure.directives)
|
val extTestDataFileStructure = ExtTestDataFileStructureFactory(disposable).ExtTestDataFileStructure(testDataFile, emptyList())
|
||||||
|
return isIgnoredTarget(extTestDataFileStructure.directives)
|
||||||
|
} finally {
|
||||||
|
Disposer.dispose(disposable)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun Settings.isIgnoredTarget(directives: Directives): Boolean {
|
internal fun Settings.isIgnoredTarget(directives: Directives): Boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user