From 737c91c5cf92dcc73c4e324138de266a809ed9d6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 4 Mar 2020 18:30:12 +0300 Subject: [PATCH] FIR test merging: compare diagnostic files symbol-by-symbol --- .../kotlin/fir/AbstractFir2IrTextTest.kt | 2 +- .../org/jetbrains/kotlin/fir/FirTestUtils.kt | 22 +++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt index d1da86b99e6..38eaad5f47d 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt @@ -41,7 +41,7 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() { val oldFrontendTextFile = File(oldFrontendTextPath) val firTextFile = File(firTextPath) if (oldFrontendTextFile.exists() && firTextFile.exists()) { - compareAndMergeFirFileAndOldFrontendFile(oldFrontendTextFile, firTextFile) + compareAndMergeFirFileAndOldFrontendFile(oldFrontendTextFile, firTextFile, compareWithTrimming = true) } super.doTest(filePath) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirTestUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirTestUtils.kt index 2db933e431a..cb2e652f5a2 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirTestUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirTestUtils.kt @@ -12,16 +12,24 @@ import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF import java.io.File -fun compareAndMergeFirFileAndOldFrontendFile(oldFrontendTestDataFile: File, frontendIRTestDataFile: File) { +fun compareAndMergeFirFileAndOldFrontendFile( + oldFrontendTestDataFile: File, + frontendIRTestDataFile: File, + compareWithTrimming: Boolean = false +) { if (oldFrontendTestDataFile.exists() && frontendIRTestDataFile.exists()) { val originalLines = oldFrontendTestDataFile.readLines() val firLines = frontendIRTestDataFile.readLines() - val sameDumps = firLines.withIndex().all { (index, line) -> - val trimmed = line.trim() - val originalTrimmed = originalLines.getOrNull(index)?.trim() - trimmed.isEmpty() && originalTrimmed?.isEmpty() != false || trimmed == originalTrimmed - } && originalLines.withIndex().all { (index, line) -> - index < firLines.size || line.trim().isEmpty() + val sameDumps = if (compareWithTrimming) { + firLines.withIndex().all { (index, line) -> + val trimmed = line.trim() + val originalTrimmed = originalLines.getOrNull(index)?.trim() + trimmed.isEmpty() && originalTrimmed?.isEmpty() != false || trimmed == originalTrimmed + } && originalLines.withIndex().all { (index, line) -> + index < firLines.size || line.trim().isEmpty() + } + } else { + firLines == originalLines } if (sameDumps) { frontendIRTestDataFile.delete()