[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
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.FIR_IDENTICAL
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
@@ -43,6 +44,8 @@ class FirIrDumpIdenticalChecker(testServices: TestServices) : AfterAnalysisCheck
override fun check(failedAssertions: List<WrappedException>) {
if (failedAssertions.isNotEmpty()) return
val testDataFile = testServices.moduleStructure.originalTestDataFiles.first()
if (DUMP_IR !in testServices.moduleStructure.allDirectives)
return
if (FIR_IDENTICAL in testServices.moduleStructure.allDirectives) {
simpleDumpChecker.deleteFirFile(testDataFile)
prettyDumpChecker.deleteFirFile(testDataFile)
@@ -71,7 +71,7 @@ abstract class AbstractFirBlackBoxCodegenTestBase(
::FirMetaInfoDiffSuppressor
)
configureDumpHandlersForCodegenTest()
configureDumpHandlersForCodegenTest(isFir = true)
baseFirBlackBoxCodegenTestDirectivesConfiguration()
}
@@ -71,6 +71,9 @@ open class AbstractFirScriptCodegenTest : AbstractKotlinCompilerWithTargetBacken
useHandlers(
::FirDiagnosticsHandler
)
useAfterAnalysisCheckers(
::FirIrDumpIdenticalChecker,
)
commonFirHandlersForCodegenTest()
}
@@ -85,7 +85,7 @@ open class AbstractFirLocalVariableTestBase(val parser: FirParser) : AbstractLoc
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureDumpHandlersForCodegenTest()
builder.configureDumpHandlersForCodegenTest(isFir = true)
builder.configureFirParser(parser)
}
}
@@ -82,7 +82,7 @@ open class AbstractFirSteppingTestBase(val parser: FirParser) : AbstractStepping
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureDumpHandlersForCodegenTest()
builder.configureDumpHandlersForCodegenTest(isFir = true)
builder.configureFirParser(parser)
}
}
@@ -105,9 +105,11 @@ fun TestConfigurationBuilder.applyDumpSmapDirective() {
}
}
fun TestConfigurationBuilder.configureDumpHandlersForCodegenTest() {
fun TestConfigurationBuilder.configureDumpHandlersForCodegenTest(isFir: Boolean = false) {
configureIrHandlersStep {
dumpHandlersForConverterStep()
if (isFir)
useAfterAnalysisCheckers(::FirIrDumpIdenticalChecker)
}
configureJvmArtifactsHandlersStep {
dumpHandlersForBackendStep()
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend
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.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
@@ -81,7 +82,7 @@ abstract class AbstractParcelizeBoxTestBase<R : ResultingArtifact.FrontendOutput
useAdditionalServices(service<JvmBoxMainClassProvider>(::ParcelizeMainClassProvider))
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor)
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor, ::FirIrDumpIdenticalChecker)
enableMetaInfoHandler()
}