Add FIR version of spec diagnostic tests
This commit is contained in:
+16
-10
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.spec.checkers
|
package org.jetbrains.kotlin.spec.checkers
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
import org.jetbrains.kotlin.TestExceptionsComparator
|
import org.jetbrains.kotlin.TestExceptionsComparator
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
@@ -16,7 +17,8 @@ import org.jetbrains.kotlin.spec.utils.models.AbstractSpecTest
|
|||||||
import org.jetbrains.kotlin.spec.utils.parsers.CommonParser
|
import org.jetbrains.kotlin.spec.utils.parsers.CommonParser
|
||||||
import org.jetbrains.kotlin.spec.utils.validators.DiagnosticTestTypeValidator
|
import org.jetbrains.kotlin.spec.utils.validators.DiagnosticTestTypeValidator
|
||||||
import org.jetbrains.kotlin.spec.utils.validators.SpecTestValidationException
|
import org.jetbrains.kotlin.spec.utils.validators.SpecTestValidationException
|
||||||
import org.jetbrains.kotlin.test.*
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.regex.Matcher
|
import java.util.regex.Matcher
|
||||||
@@ -30,6 +32,18 @@ abstract class AbstractDiagnosticsTestSpec : org.jetbrains.kotlin.checkers.Abstr
|
|||||||
private const val MODULE_PATH = "compiler/tests-spec"
|
private const val MODULE_PATH = "compiler/tests-spec"
|
||||||
private const val DIAGNOSTICS_TESTDATA_PATH = "$MODULE_PATH/testData/diagnostics"
|
private const val DIAGNOSTICS_TESTDATA_PATH = "$MODULE_PATH/testData/diagnostics"
|
||||||
private const val HELPERS_PATH = "$DIAGNOSTICS_TESTDATA_PATH/helpers"
|
private const val HELPERS_PATH = "$DIAGNOSTICS_TESTDATA_PATH/helpers"
|
||||||
|
|
||||||
|
fun additionalKtFiles(specTest: AbstractSpecTest, project: Project): List<KtFile> {
|
||||||
|
if (specTest.helpers == null) return emptyList()
|
||||||
|
|
||||||
|
return specTest.helpers.map {
|
||||||
|
val filename = "$it.kt"
|
||||||
|
val helperContent = FileUtil.loadFile(File("$HELPERS_PATH/$filename"), true)
|
||||||
|
|
||||||
|
|
||||||
|
KotlinTestUtils.createFile(filename, helperContent, project)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lateinit var specTest: AbstractSpecTest
|
lateinit var specTest: AbstractSpecTest
|
||||||
@@ -56,15 +70,7 @@ abstract class AbstractDiagnosticsTestSpec : org.jetbrains.kotlin.checkers.Abstr
|
|||||||
override fun getKtFiles(testFiles: List<TestFile>, includeExtras: Boolean): List<KtFile> {
|
override fun getKtFiles(testFiles: List<TestFile>, includeExtras: Boolean): List<KtFile> {
|
||||||
val ktFiles = super.getKtFiles(testFiles, includeExtras) as ArrayList
|
val ktFiles = super.getKtFiles(testFiles, includeExtras) as ArrayList
|
||||||
|
|
||||||
if (specTest.helpers == null) return ktFiles
|
ktFiles.addAll(additionalKtFiles(specTest, project))
|
||||||
|
|
||||||
specTest.helpers?.forEach {
|
|
||||||
val filename = "$it.kt"
|
|
||||||
val helperContent = FileUtil.loadFile(File("$HELPERS_PATH/$filename"), true)
|
|
||||||
ktFiles.add(
|
|
||||||
KotlinTestUtils.createFile(filename, helperContent, project)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ktFiles
|
return ktFiles
|
||||||
}
|
}
|
||||||
|
|||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.spec.checkers
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.AbstractFirOldFrontendDiagnosticsTest
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.spec.utils.models.AbstractSpecTest
|
||||||
|
import org.jetbrains.kotlin.spec.utils.parsers.CommonParser
|
||||||
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
abstract class AbstractFirDiagnosticsTestSpec : AbstractFirOldFrontendDiagnosticsTest() {
|
||||||
|
private lateinit var specTest: AbstractSpecTest
|
||||||
|
|
||||||
|
override fun extractConfigurationKind(files: List<TestFile>): ConfigurationKind {
|
||||||
|
return ConfigurationKind.ALL
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getKtFiles(testFiles: List<TestFile>, includeExtras: Boolean): List<KtFile> {
|
||||||
|
val ktFiles = super.getKtFiles(testFiles, includeExtras) as MutableList
|
||||||
|
|
||||||
|
ktFiles.addAll(AbstractDiagnosticsTestSpec.additionalKtFiles(specTest, project))
|
||||||
|
|
||||||
|
return ktFiles
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun analyzeAndCheck(testDataFile: File, files: List<TestFile>) {
|
||||||
|
val testFilePath = testDataFile.canonicalPath
|
||||||
|
|
||||||
|
specTest = CommonParser.parseSpecTest(testFilePath, files.associate { Pair(it.fileName, it.clearText) }).first
|
||||||
|
|
||||||
|
super.analyzeAndCheck(testDataFile, files)
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+6686
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.spec.utils.tasks
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.generators.tests.generator.testGroup
|
import org.jetbrains.kotlin.generators.tests.generator.testGroup
|
||||||
import org.jetbrains.kotlin.spec.checkers.AbstractDiagnosticsTestSpec
|
import org.jetbrains.kotlin.spec.checkers.AbstractDiagnosticsTestSpec
|
||||||
|
import org.jetbrains.kotlin.spec.checkers.AbstractFirDiagnosticsTestSpec
|
||||||
import org.jetbrains.kotlin.spec.codegen.AbstractBlackBoxCodegenTestSpec
|
import org.jetbrains.kotlin.spec.codegen.AbstractBlackBoxCodegenTestSpec
|
||||||
import org.jetbrains.kotlin.spec.parsing.AbstractParsingTestSpec
|
import org.jetbrains.kotlin.spec.parsing.AbstractParsingTestSpec
|
||||||
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.SPEC_TESTDATA_PATH
|
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.SPEC_TESTDATA_PATH
|
||||||
@@ -45,6 +46,15 @@ fun generateTests() {
|
|||||||
excludedPattern = excludedFirTestdataPattern
|
excludedPattern = excludedFirTestdataPattern
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testClass<AbstractFirDiagnosticsTestSpec> {
|
||||||
|
model(
|
||||||
|
"diagnostics",
|
||||||
|
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
|
||||||
|
excludedPattern = excludedFirTestdataPattern
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
testClass<AbstractParsingTestSpec> {
|
testClass<AbstractParsingTestSpec> {
|
||||||
model(
|
model(
|
||||||
relativeRootPath = "psi",
|
relativeRootPath = "psi",
|
||||||
@@ -59,6 +69,7 @@ fun generateTests() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
|
TestsJsonMapGenerator.buildTestsMapPerSection()
|
||||||
TestsJsonMapGenerator.buildTestsMapPerSection()
|
TestsJsonMapGenerator.buildTestsMapPerSection()
|
||||||
generateTests()
|
generateTests()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user