[Tests] Enforce FIR_IDENTICAL for Fir tests with IrTextDumpHandler

^KT-64256 Fixed
This commit is contained in:
Vladimir Sukharev
2023-12-12 18:26:38 +01:00
committed by Space Team
parent cbf21acede
commit ec3dd43edc
7 changed files with 14 additions and 5 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.test.backend.handlers package org.jetbrains.kotlin.test.backend.handlers
import org.jetbrains.kotlin.test.WrappedException import org.jetbrains.kotlin.test.WrappedException
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_IR
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_IDENTICAL import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_IDENTICAL
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
@@ -43,6 +44,8 @@ class FirIrDumpIdenticalChecker(testServices: TestServices) : AfterAnalysisCheck
override fun check(failedAssertions: List<WrappedException>) { override fun check(failedAssertions: List<WrappedException>) {
if (failedAssertions.isNotEmpty()) return if (failedAssertions.isNotEmpty()) return
val testDataFile = testServices.moduleStructure.originalTestDataFiles.first() val testDataFile = testServices.moduleStructure.originalTestDataFiles.first()
if (DUMP_IR !in testServices.moduleStructure.allDirectives)
return
if (FIR_IDENTICAL in testServices.moduleStructure.allDirectives) { if (FIR_IDENTICAL in testServices.moduleStructure.allDirectives) {
simpleDumpChecker.deleteFirFile(testDataFile) simpleDumpChecker.deleteFirFile(testDataFile)
prettyDumpChecker.deleteFirFile(testDataFile) prettyDumpChecker.deleteFirFile(testDataFile)
@@ -71,7 +71,7 @@ abstract class AbstractFirBlackBoxCodegenTestBase(
::FirMetaInfoDiffSuppressor ::FirMetaInfoDiffSuppressor
) )
configureDumpHandlersForCodegenTest() configureDumpHandlersForCodegenTest(isFir = true)
baseFirBlackBoxCodegenTestDirectivesConfiguration() baseFirBlackBoxCodegenTestDirectivesConfiguration()
} }
@@ -71,6 +71,9 @@ open class AbstractFirScriptCodegenTest : AbstractKotlinCompilerWithTargetBacken
useHandlers( useHandlers(
::FirDiagnosticsHandler ::FirDiagnosticsHandler
) )
useAfterAnalysisCheckers(
::FirIrDumpIdenticalChecker,
)
commonFirHandlersForCodegenTest() commonFirHandlersForCodegenTest()
} }
@@ -85,7 +85,7 @@ open class AbstractFirLocalVariableTestBase(val parser: FirParser) : AbstractLoc
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configureDumpHandlersForCodegenTest() builder.configureDumpHandlersForCodegenTest(isFir = true)
builder.configureFirParser(parser) builder.configureFirParser(parser)
} }
} }
@@ -82,7 +82,7 @@ open class AbstractFirSteppingTestBase(val parser: FirParser) : AbstractStepping
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configureDumpHandlersForCodegenTest() builder.configureDumpHandlersForCodegenTest(isFir = true)
builder.configureFirParser(parser) builder.configureFirParser(parser)
} }
} }
@@ -105,9 +105,11 @@ fun TestConfigurationBuilder.applyDumpSmapDirective() {
} }
} }
fun TestConfigurationBuilder.configureDumpHandlersForCodegenTest() { fun TestConfigurationBuilder.configureDumpHandlersForCodegenTest(isFir: Boolean = false) {
configureIrHandlersStep { configureIrHandlersStep {
dumpHandlersForConverterStep() dumpHandlersForConverterStep()
if (isFir)
useAfterAnalysisCheckers(::FirIrDumpIdenticalChecker)
} }
configureJvmArtifactsHandlersStep { configureJvmArtifactsHandlersStep {
dumpHandlersForBackendStep() dumpHandlersForBackendStep()
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
import org.jetbrains.kotlin.test.backend.handlers.FirIrDumpIdenticalChecker
import org.jetbrains.kotlin.test.backend.handlers.IrTextDumpHandler import org.jetbrains.kotlin.test.backend.handlers.IrTextDumpHandler
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
@@ -81,7 +82,7 @@ abstract class AbstractParcelizeBoxTestBase<R : ResultingArtifact.FrontendOutput
useAdditionalServices(service<JvmBoxMainClassProvider>(::ParcelizeMainClassProvider)) useAdditionalServices(service<JvmBoxMainClassProvider>(::ParcelizeMainClassProvider))
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor) useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor, ::FirIrDumpIdenticalChecker)
enableMetaInfoHandler() enableMetaInfoHandler()
} }