[Spec tests] Fix fir test runner for spec tests

This commit is contained in:
anastasiia.spaseeva
2020-05-25 21:35:22 +03:00
parent 2509dfb287
commit 5ba9d09278
4 changed files with 18 additions and 10 deletions
@@ -412,9 +412,13 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
val RENDER_DIAGNOSTICS_FULL_TEXT = "RENDER_DIAGNOSTICS_FULL_TEXT"
val DIAGNOSTIC_IN_TESTDATA_PATTERN = Regex("<!>|<!(.*?(\\(\".*?\"\\)|\\(\\))??)+(?<!<)!>")
val SPEC_LINKS_IN_TESTDATA_PATTERN =
val SPEC_LINKED_TESTDATA_PATTERN =
Regex("""\/\*\s+? \* KOTLIN (PSI|DIAGNOSTICS|CODEGEN BOX) SPEC TEST \((POSITIVE|NEGATIVE)\)\n([\s\S]*?\n)\s+\*\/\n""")
val SPEC_NOT_LINED_TESTDATA_PATTERN =
Regex("""\/\*\s+? \* KOTLIN (PSI|DIAGNOSTICS|CODEGEN BOX) NOT LINKED SPEC TEST \((POSITIVE|NEGATIVE)\)\n([\s\S]*?\n)\s+\*\/\n""")
fun parseDiagnosticFilterDirective(
directiveMap: Directives,
allowUnderscoreUsage: Boolean
@@ -21,7 +21,7 @@ abstract class AbstractFirOldFrontendDiagnosticsTest : AbstractFirDiagnosticsTes
private fun prepareTestDataFile(originalFilePath: String, firTestDataFile: File) {
if (!firTestDataFile.exists()) {
KotlinTestUtils.assertEqualsToFile(firTestDataFile, loadTestDataWithoutDiagnostics(File(originalFilePath)))
KotlinTestUtils.assertEqualsToFile(firTestDataFile, loadTestDataWithDiagnostics(File(originalFilePath)))
}
}
@@ -8,7 +8,8 @@ package org.jetbrains.kotlin.fir
import com.intellij.openapi.util.text.StringUtil
import junit.framework.TestCase
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest.Companion.DIAGNOSTIC_IN_TESTDATA_PATTERN
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest.Companion.SPEC_LINKS_IN_TESTDATA_PATTERN
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest.Companion.SPEC_LINKED_TESTDATA_PATTERN
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest.Companion.SPEC_NOT_LINED_TESTDATA_PATTERN
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF
import java.io.File
@@ -51,9 +52,12 @@ fun compareAndMergeFirFileAndOldFrontendFile(
}
}
fun loadTestDataWithoutDiagnostics(file: File): String {
val textWithoutDiagnostics = KotlinTestUtils.doLoadFile(file)
.replace(DIAGNOSTIC_IN_TESTDATA_PATTERN, "")
.replace(SPEC_LINKS_IN_TESTDATA_PATTERN, "")
return StringUtil.convertLineSeparators(textWithoutDiagnostics.trim()).trimTrailingWhitespacesAndAddNewlineAtEOF()
private fun loadTestData(file: File, vararg patternsToBeRemoved: Regex): String {
var text = KotlinTestUtils.doLoadFile(file)
patternsToBeRemoved.forEach { text = text.replace(it, "") }
return StringUtil.convertLineSeparators(text.trim()).trimTrailingWhitespacesAndAddNewlineAtEOF()
}
fun loadTestDataWithDiagnostics(file: File) = loadTestData(file, SPEC_LINKED_TESTDATA_PATTERN, SPEC_NOT_LINED_TESTDATA_PATTERN)
fun loadTestDataWithoutDiagnostics(file: File) = loadTestData(file, DIAGNOSTIC_IN_TESTDATA_PATTERN, SPEC_LINKED_TESTDATA_PATTERN)
@@ -29,8 +29,8 @@ abstract class AbstractFirDiagnosticsTestSpec : AbstractFirOldFrontendDiagnostic
override fun analyzeAndCheck(testDataFile: File, files: List<TestFile>) {
val testFilePath = testDataFile.canonicalPath
specTest = CommonParser.parseSpecTest(testFilePath, files.associate { Pair(it.fileName, it.clearText) }).first
val testWithMetaInfoPath = if (!testFilePath.contains(".fir.kt")) testFilePath else testFilePath.replace(".fir.kt", ".kt")
specTest = CommonParser.parseSpecTest(testWithMetaInfoPath, files.associate { Pair(it.fileName, it.clearText) }).first
super.analyzeAndCheck(testDataFile, files)
}