diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticTest.kt new file mode 100644 index 00000000000..9b304e7dd55 --- /dev/null +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticTest.kt @@ -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 + } + } + } +} diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticUsingJavacTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticUsingJavacTest.kt new file mode 100644 index 00000000000..6c9f9bb2a28 --- /dev/null +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticUsingJavacTest.kt @@ -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) + } + } +} diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt new file mode 100644 index 00000000000..1c194a73391 --- /dev/null +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt @@ -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 + } + } + } +} diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractKotlinCompilerTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractKotlinCompilerTest.kt new file mode 100644 index 00000000000..89db141e50f --- /dev/null +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractKotlinCompilerTest.kt @@ -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> = 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) + } +}