[Test] Support KOTLIN_CONFIGURATION_FLAGS directive in new tests

This commit is contained in:
Dmitriy Novozhilov
2020-12-28 11:36:53 +03:00
committed by TeamCityServer
parent e0cd830a0e
commit 9fd2800594
9 changed files with 162 additions and 97 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.test.frontend.classic.handlers.FirTestDataConsistenc
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
@@ -44,6 +45,7 @@ abstract class AbstractDiagnosticTest : AbstractKotlinCompilerTest() {
enableMetaInfoHandler()
useConfigurators(
::CommonEnvironmentConfigurator,
::JvmEnvironmentConfigurator,
::ScriptingEnvironmentConfigurator
)
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandl
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
@@ -31,6 +32,8 @@ abstract class AbstractDiagnosticsNativeTest : AbstractKotlinCompilerTest() {
enableMetaInfoHandler()
useConfigurators(::CommonEnvironmentConfigurator)
useMetaInfoProcessors(::OldNewInferenceMetaInfoProcessor)
useAdditionalSourceProviders(
::AdditionalDiagnosticsSourceFilesProvider,
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.test.frontend.classic.handlers.DynamicCallsDumpHandl
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
@@ -33,7 +34,10 @@ abstract class AbstractDiagnosticsTestWithJsStdLib : AbstractKotlinCompilerTest(
enableMetaInfoHandler()
useConfigurators(::JsEnvironmentConfigurator,)
useConfigurators(
::CommonEnvironmentConfigurator,
::JsEnvironmentConfigurator,
)
useMetaInfoProcessors(::OldNewInferenceMetaInfoProcessor)
useAdditionalSourceProviders(
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandl
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
@@ -41,7 +42,10 @@ abstract class AbstractDiagnosticsTestWithJvmBackend : AbstractKotlinCompilerTes
enableMetaInfoHandler()
useConfigurators(::JvmEnvironmentConfigurator)
useConfigurators(
::CommonEnvironmentConfigurator,
::JvmEnvironmentConfigurator,
)
useMetaInfoProcessors(::OldNewInferenceMetaInfoProcessor)
useAdditionalSourceProviders(
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
import org.jetbrains.kotlin.test.frontend.fir.handlers.*
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
@@ -35,7 +36,11 @@ abstract class AbstractFirDiagnosticTest : AbstractKotlinCompilerTest() {
enableMetaInfoHandler()
useConfigurators(::JvmEnvironmentConfigurator)
useConfigurators(
::CommonEnvironmentConfigurator,
::JvmEnvironmentConfigurator,
)
useAdditionalSourceProviders(
::AdditionalDiagnosticsSourceFilesProvider,
::CoroutineHelpersSourceFilesProvider,
@@ -22,10 +22,7 @@ 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.JdkForeignAnnotationType
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.configuration.JvmForeignAnnotationsAgainstCompiledJavaConfigurator
import org.jetbrains.kotlin.test.services.configuration.JvmForeignAnnotationsConfigurator
import org.jetbrains.kotlin.test.services.configuration.*
import org.jetbrains.kotlin.test.services.jvm.ForeignAnnotationAgainstCompiledJavaTestSuppressor
abstract class AbstractForeignAnnotationsTestBase : AbstractKotlinCompilerTest() {
@@ -45,6 +42,7 @@ abstract class AbstractForeignAnnotationsTestBase : AbstractKotlinCompilerTest()
enableMetaInfoHandler()
useConfigurators(
::CommonEnvironmentConfigurator,
::JvmEnvironmentConfigurator,
foreignAnnotationsConfigurator
)
@@ -0,0 +1,29 @@
/*
* 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.services.configuration
import com.intellij.mock.MockProject
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.CompilerConfigurationKey
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.parseAnalysisFlags
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.TestServices
class CommonEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
override val directivesContainers: List<DirectivesContainer>
get() = listOf(ConfigurationDirectives)
override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule, project: MockProject) {
val rawFlags = module.directives[ConfigurationDirectives.KOTLIN_CONFIGURATION_FLAGS]
parseAnalysisFlags(rawFlags).forEach { (key, value) ->
@Suppress("UNCHECKED_CAST")
configuration.put(key as CompilerConfigurationKey<Any>, value)
}
}
}