[Spec tests] Fix fir test runner for spec tests
This commit is contained in:
@@ -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
|
||||
|
||||
+1
-1
@@ -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)
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user