[LL FIR] allow muting tests with MUTE_LL_FIR directive in all compiler-based tests
This commit is contained in:
committed by
Space Team
parent
68235b978b
commit
f26300a43e
+2
@@ -9,6 +9,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.LLFirCompiledBasedTestSuppressor
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactory
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactory
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.FirLowLevelCompilerBasedTestConfigurator
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.FirLowLevelCompilerBasedTestConfigurator
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||||
@@ -59,6 +60,7 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
|||||||
useMetaTestConfigurators(::LLFirMetaTestConfigurator)
|
useMetaTestConfigurators(::LLFirMetaTestConfigurator)
|
||||||
useAfterAnalysisCheckers(::LLFirIdenticalChecker)
|
useAfterAnalysisCheckers(::LLFirIdenticalChecker)
|
||||||
useAfterAnalysisCheckers(::LLFirDivergenceCommentChecker)
|
useAfterAnalysisCheckers(::LLFirDivergenceCommentChecker)
|
||||||
|
useAfterAnalysisCheckers(::LLFirCompiledBasedTestSuppressor)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun TestConfigurationBuilder.configureTest() {}
|
open fun TestConfigurationBuilder.configureTest() {}
|
||||||
|
|||||||
+1
-30
@@ -9,12 +9,9 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCo
|
|||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.TestConfiguration
|
import org.jetbrains.kotlin.test.TestConfiguration
|
||||||
import org.jetbrains.kotlin.test.WrappedException
|
|
||||||
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
|
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
|
||||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
import org.jetbrains.kotlin.test.builders.firHandlersStep
|
import org.jetbrains.kotlin.test.builders.firHandlersStep
|
||||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
|
||||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirCfgDumpHandler
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirCfgDumpHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDumpHandler
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDumpHandler
|
||||||
@@ -23,10 +20,8 @@ import org.jetbrains.kotlin.test.frontend.fir.handlers.FirScopeDumpHandler
|
|||||||
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
|
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
|
||||||
import org.jetbrains.kotlin.test.runners.codegen.baseFirBlackBoxCodegenTestDirectivesConfiguration
|
import org.jetbrains.kotlin.test.runners.codegen.baseFirBlackBoxCodegenTestDirectivesConfiguration
|
||||||
import org.jetbrains.kotlin.test.runners.codegen.configureModernJavaWhenNeeded
|
import org.jetbrains.kotlin.test.runners.codegen.configureModernJavaWhenNeeded
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
|
||||||
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.moduleStructure
|
|
||||||
import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider
|
||||||
import org.jetbrains.kotlin.test.services.sourceProviders.CodegenHelpersSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.sourceProviders.CodegenHelpersSourceFilesProvider
|
||||||
import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider
|
||||||
@@ -62,7 +57,7 @@ abstract class AbstractLLFirBlackBoxCodegenBasedTestBase : AbstractCompilerBased
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
useAfterAnalysisCheckers(::LLFirBlackBoxCodegenSuppressor, ::BlackBoxCodegenSuppressor)
|
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun shouldSkipTest(filePath: String, configuration: TestConfiguration): Boolean {
|
override fun shouldSkipTest(filePath: String, configuration: TestConfiguration): Boolean {
|
||||||
@@ -79,27 +74,3 @@ abstract class AbstractLLFirBlackBoxCodegenBasedTestBase : AbstractCompilerBased
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirBlackBoxCodegenSuppressor(testServices: TestServices) : AfterAnalysisChecker(testServices) {
|
|
||||||
override val directiveContainers: List<DirectivesContainer> get() = listOf(Companion)
|
|
||||||
|
|
||||||
override fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> {
|
|
||||||
if (MUTE_LL_FIR !in testServices.moduleStructure.allDirectives) return failedAssertions
|
|
||||||
|
|
||||||
return if (failedAssertions.isEmpty()) {
|
|
||||||
listOf(
|
|
||||||
AssertionError(
|
|
||||||
"Test contains $MUTE_LL_FIR directive but no errors was reported. Please remove directive",
|
|
||||||
).wrap()
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
emptyList()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private companion object : SimpleDirectivesContainer() {
|
|
||||||
val MUTE_LL_FIR by stringDirective(
|
|
||||||
"Temporary mute Low Level FIR implementation due to some error. YT ticket must be provided"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.test.WrappedException
|
||||||
|
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||||
|
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||||
|
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
|
||||||
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
import org.jetbrains.kotlin.test.services.moduleStructure
|
||||||
|
|
||||||
|
class LLFirCompiledBasedTestSuppressor(testServices: TestServices) : AfterAnalysisChecker(testServices) {
|
||||||
|
override val directiveContainers: List<DirectivesContainer> get() = listOf(Companion)
|
||||||
|
|
||||||
|
override fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> {
|
||||||
|
if (MUTE_LL_FIR !in testServices.moduleStructure.allDirectives) return failedAssertions
|
||||||
|
|
||||||
|
return if (failedAssertions.isEmpty()) {
|
||||||
|
listOf(
|
||||||
|
AssertionError(
|
||||||
|
"Test contains $MUTE_LL_FIR directive but no errors was reported. Please remove directive",
|
||||||
|
).wrap()
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
emptyList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private companion object : SimpleDirectivesContainer() {
|
||||||
|
val MUTE_LL_FIR by stringDirective(
|
||||||
|
"Temporary mute Low Level FIR implementation due to some error. YT ticket must be provided"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user