FIR test merging: compare diagnostic files symbol-by-symbol

This commit is contained in:
Mikhail Glukhikh
2020-03-04 18:30:12 +03:00
parent 48d30daa47
commit 737c91c5cf
2 changed files with 16 additions and 8 deletions
@@ -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)
}
@@ -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()