[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 RENDER_DIAGNOSTICS_FULL_TEXT = "RENDER_DIAGNOSTICS_FULL_TEXT"
|
||||||
|
|
||||||
val DIAGNOSTIC_IN_TESTDATA_PATTERN = Regex("<!>|<!(.*?(\\(\".*?\"\\)|\\(\\))??)+(?<!<)!>")
|
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""")
|
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(
|
fun parseDiagnosticFilterDirective(
|
||||||
directiveMap: Directives,
|
directiveMap: Directives,
|
||||||
allowUnderscoreUsage: Boolean
|
allowUnderscoreUsage: Boolean
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ abstract class AbstractFirOldFrontendDiagnosticsTest : AbstractFirDiagnosticsTes
|
|||||||
|
|
||||||
private fun prepareTestDataFile(originalFilePath: String, firTestDataFile: File) {
|
private fun prepareTestDataFile(originalFilePath: String, firTestDataFile: File) {
|
||||||
if (!firTestDataFile.exists()) {
|
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 com.intellij.openapi.util.text.StringUtil
|
||||||
import junit.framework.TestCase
|
import junit.framework.TestCase
|
||||||
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest.Companion.DIAGNOSTIC_IN_TESTDATA_PATTERN
|
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.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF
|
import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -51,9 +52,12 @@ fun compareAndMergeFirFileAndOldFrontendFile(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadTestDataWithoutDiagnostics(file: File): String {
|
private fun loadTestData(file: File, vararg patternsToBeRemoved: Regex): String {
|
||||||
val textWithoutDiagnostics = KotlinTestUtils.doLoadFile(file)
|
var text = KotlinTestUtils.doLoadFile(file)
|
||||||
.replace(DIAGNOSTIC_IN_TESTDATA_PATTERN, "")
|
patternsToBeRemoved.forEach { text = text.replace(it, "") }
|
||||||
.replace(SPEC_LINKS_IN_TESTDATA_PATTERN, "")
|
return StringUtil.convertLineSeparators(text.trim()).trimTrailingWhitespacesAndAddNewlineAtEOF()
|
||||||
return StringUtil.convertLineSeparators(textWithoutDiagnostics.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>) {
|
override fun analyzeAndCheck(testDataFile: File, files: List<TestFile>) {
|
||||||
val testFilePath = testDataFile.canonicalPath
|
val testFilePath = testDataFile.canonicalPath
|
||||||
|
val testWithMetaInfoPath = if (!testFilePath.contains(".fir.kt")) testFilePath else testFilePath.replace(".fir.kt", ".kt")
|
||||||
specTest = CommonParser.parseSpecTest(testFilePath, files.associate { Pair(it.fileName, it.clearText) }).first
|
specTest = CommonParser.parseSpecTest(testWithMetaInfoPath, files.associate { Pair(it.fileName, it.clearText) }).first
|
||||||
|
|
||||||
super.analyzeAndCheck(testDataFile, files)
|
super.analyzeAndCheck(testDataFile, files)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user