[TEST] Add abstract test runners for some of compiler test in new infrastructure
This commit includes runners for FE 1.0 and FIR diagnostics tests and JVM black box tests for old backend
This commit is contained in:
+65
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* 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.test.runners
|
||||
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_STDLIB
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
|
||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
|
||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
|
||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.FirTestDataConsistencyHandler
|
||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
|
||||
import org.jetbrains.kotlin.test.model.BackendKind
|
||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
||||
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
|
||||
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
||||
import org.jetbrains.kotlin.test.services.configuration.ScriptingEnvironmentConfigurator
|
||||
|
||||
abstract class AbstractDiagnosticTest : AbstractKotlinCompilerTest() {
|
||||
override fun TestConfigurationBuilder.configuration() {
|
||||
globalDefaults {
|
||||
frontend = FrontendKinds.ClassicFrontend
|
||||
backend = BackendKind.NoBackend
|
||||
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||
dependencyKind = DependencyKind.Source
|
||||
}
|
||||
|
||||
defaultDirectives {
|
||||
+USE_PSI_CLASS_FILES_READING
|
||||
}
|
||||
|
||||
enableMetaInfoHandler()
|
||||
|
||||
useConfigurators(
|
||||
::JvmEnvironmentConfigurator,
|
||||
::ScriptingEnvironmentConfigurator
|
||||
)
|
||||
|
||||
useMetaInfoProcessors(::OldNewInferenceMetaInfoProcessor)
|
||||
useAdditionalSourceProviders(
|
||||
::AdditionalDiagnosticsSourceFilesProvider,
|
||||
::CoroutineHelpersSourceFilesProvider,
|
||||
)
|
||||
|
||||
useFrontendFacades(::ClassicFrontendFacade)
|
||||
useFrontendHandlers(
|
||||
::DeclarationsDumpHandler,
|
||||
::ClassicDiagnosticsHandler,
|
||||
)
|
||||
|
||||
useAfterAnalysisCheckers(::FirTestDataConsistencyHandler)
|
||||
|
||||
forTestsMatching("compiler/testData/diagnostics/testsWithStdLib/*") {
|
||||
defaultDirectives {
|
||||
+WITH_STDLIB
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* 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.test.runners
|
||||
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.frontend.classic.handlers.DiagnosticTestWithJavacSkipConfigurator
|
||||
|
||||
abstract class AbstractDiagnosticUsingJavacTest : AbstractDiagnosticTest() {
|
||||
override fun configure(builder: TestConfigurationBuilder) {
|
||||
super.configure(builder)
|
||||
builder.apply {
|
||||
defaultDirectives {
|
||||
+JvmEnvironmentConfigurationDirectives.USE_JAVAC
|
||||
}
|
||||
useMetaTestConfigurators(::DiagnosticTestWithJavacSkipConfigurator)
|
||||
}
|
||||
}
|
||||
}
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* 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.test.runners
|
||||
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor
|
||||
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
||||
import org.jetbrains.kotlin.test.frontend.fir.handlers.*
|
||||
import org.jetbrains.kotlin.test.model.BackendKind
|
||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
|
||||
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
|
||||
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
||||
import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator
|
||||
|
||||
abstract class AbstractFirDiagnosticTest : AbstractKotlinCompilerTest() {
|
||||
override fun TestConfigurationBuilder.configuration() {
|
||||
globalDefaults {
|
||||
frontend = FrontendKinds.FIR
|
||||
backend = BackendKind.NoBackend
|
||||
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||
dependencyKind = DependencyKind.Source
|
||||
}
|
||||
|
||||
enableMetaInfoHandler()
|
||||
|
||||
useConfigurators(::JvmEnvironmentConfigurator)
|
||||
useAdditionalSourceProviders(
|
||||
::AdditionalDiagnosticsSourceFilesProvider,
|
||||
::CoroutineHelpersSourceFilesProvider,
|
||||
)
|
||||
useFrontendFacades(::FirFrontendFacade)
|
||||
useFrontendHandlers(
|
||||
::FirDiagnosticsHandler,
|
||||
::FirDumpHandler,
|
||||
::FirCfgDumpHandler,
|
||||
::FirCfgConsistencyHandler,
|
||||
)
|
||||
|
||||
forTestsMatching("compiler/testData/diagnostics/*") {
|
||||
useAfterAnalysisCheckers(
|
||||
::FirIdenticalChecker,
|
||||
::FirFailingTestSuppressor,
|
||||
)
|
||||
useMetaTestConfigurators(::FirOldFrontendMetaConfigurator)
|
||||
}
|
||||
|
||||
forTestsMatching("compiler/fir/analysis-tests/testData/*") {
|
||||
defaultDirectives {
|
||||
+FirDiagnosticsDirectives.FIR_DUMP
|
||||
}
|
||||
}
|
||||
|
||||
forTestsMatching(
|
||||
"compiler/testData/diagnostics/testsWithStdLib/*" or
|
||||
"compiler/fir/analysis-tests/testData/resolveWithStdlib/*"
|
||||
) {
|
||||
defaultDirectives {
|
||||
+JvmEnvironmentConfigurationDirectives.WITH_STDLIB
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* 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.test.runners
|
||||
|
||||
import com.intellij.testFramework.TestDataFile
|
||||
import org.jetbrains.kotlin.test.builders.Constructor
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.builders.testRunner
|
||||
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||
import org.jetbrains.kotlin.test.preprocessors.MetaInfosCleanupPreprocessor
|
||||
import org.jetbrains.kotlin.test.services.JUnit5Assertions
|
||||
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
|
||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||
import org.jetbrains.kotlin.types.FlexibleTypeImpl
|
||||
|
||||
abstract class AbstractKotlinCompilerTest {
|
||||
companion object {
|
||||
val defaultDirectiveContainers = listOf(
|
||||
ConfigurationDirectives,
|
||||
LanguageSettingsDirectives
|
||||
)
|
||||
|
||||
val defaultPreprocessors: List<Constructor<SourceFilePreprocessor>> = listOf(
|
||||
::MetaInfosCleanupPreprocessor
|
||||
)
|
||||
}
|
||||
|
||||
private val configuration: TestConfigurationBuilder.() -> Unit = {
|
||||
assertions = JUnit5Assertions
|
||||
useSourcePreprocessor(*defaultPreprocessors.toTypedArray())
|
||||
useDirectives(*defaultDirectiveContainers.toTypedArray())
|
||||
configureDebugFlags()
|
||||
configure(this)
|
||||
}
|
||||
|
||||
private fun configureDebugFlags() {
|
||||
AbstractTypeChecker.RUN_SLOW_ASSERTIONS = true
|
||||
FlexibleTypeImpl.RUN_SLOW_ASSERTIONS = true
|
||||
}
|
||||
|
||||
abstract fun TestConfigurationBuilder.configuration()
|
||||
|
||||
open fun configure(builder: TestConfigurationBuilder) {
|
||||
builder.configuration()
|
||||
}
|
||||
|
||||
fun runTest(@TestDataFile filePath: String) {
|
||||
testRunner(filePath, configuration).runTest(filePath)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user