[Test] Migrate FIR diagnostic spec tests to new infrastructure

This commit includes a lot of minor changes in testdata: new infrastructure
  requires that each test file in one testdata file in one module must
  have unique name, but a lot of existing spec tests didn't satisfy
  this requirement
This commit is contained in:
Dmitriy Novozhilov
2021-01-25 12:26:01 +03:00
parent 0b45139b34
commit 663d5026d8
119 changed files with 3283 additions and 3579 deletions
@@ -1,37 +0,0 @@
/*
* 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
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)
}
}
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.spec.utils.tasks
import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite
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.parsing.AbstractParsingTestSpec
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.SPEC_TESTDATA_PATH
@@ -15,6 +14,8 @@ import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.SPEC_TEST_PATH
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.TESTS_MAP_FILENAME
import org.jetbrains.kotlin.spec.utils.SectionsJsonMapGenerator
import org.jetbrains.kotlin.spec.utils.TestsJsonMapGenerator
import org.jetbrains.kotlin.test.generators.generateTestGroupSuiteWithJUnit5
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTestSpec
import java.io.File
import java.nio.file.Files
@@ -49,14 +50,6 @@ fun generateTests() {
)
}
testClass<AbstractFirDiagnosticsTestSpec> {
model(
"diagnostics",
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
excludedPattern = excludedFirTestdataPattern
)
}
testClass<AbstractParsingTestSpec> {
model(
relativeRootPath = "psi",
@@ -69,6 +62,18 @@ fun generateTests() {
}
}
}
generateTestGroupSuiteWithJUnit5 {
testGroup(testsRoot = "compiler/fir/analysis-tests/tests-gen", testDataRoot = SPEC_TESTDATA_PATH) {
testClass<AbstractFirDiagnosticTestSpec> {
model(
"diagnostics",
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
excludedPattern = excludedFirTestdataPattern
)
}
}
}
}
fun main() {