[Test] Get rid of BackendKindExtractor

This commit is contained in:
Dmitriy Novozhilov
2021-07-30 15:45:34 +03:00
committed by teamcityserver
parent d43d0071a4
commit ca40cbede5
11 changed files with 23 additions and 55 deletions

View File

@@ -15,7 +15,10 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.codegen.CodegenTestFiles
import org.jetbrains.kotlin.codegen.GenerationUtils
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.psi.KtFile
@@ -28,7 +31,6 @@ import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest
import org.jetbrains.kotlin.test.services.*
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.impl.BackendKindExtractorImpl
import org.jetbrains.kotlin.test.services.impl.TemporaryDirectoryManagerImpl
import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.sourceProviders.CodegenHelpersSourceFilesProvider
@@ -408,7 +410,6 @@ class CodegenTestsOnAndroidGenerator private constructor(private val pathManager
assertions = JUnit5Assertions
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
useAdditionalService<BackendKindExtractor>(::BackendKindExtractorImpl)
useSourcePreprocessor(*AbstractKotlinCompilerTest.defaultPreprocessors.toTypedArray())
useDirectives(*AbstractKotlinCompilerTest.defaultDirectiveContainers.toTypedArray())
}

View File

@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.test.model
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.services.ServiceRegistrationData
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.backendKindExtractor
interface ServicesAndDirectivesContainer {
val additionalServices: List<ServiceRegistrationData>
@@ -51,7 +50,7 @@ abstract class Frontend2BackendConverter<R : ResultingArtifact.FrontendOutput<R>
final override val outputKind: BackendKind<I>
) : AbstractTestFacade<R, I>() {
override fun shouldRunAnalysis(module: TestModule): Boolean {
return testServices.backendKindExtractor.backendKind(module.targetBackend) == outputKind
return module.backendKind == outputKind
}
}
@@ -61,6 +60,6 @@ abstract class BackendFacade<I : ResultingArtifact.BackendInput<I>, A : Resultin
final override val outputKind: BinaryKind<A>
) : AbstractTestFacade<I, A>() {
override fun shouldRunAnalysis(module: TestModule): Boolean {
return testServices.backendKindExtractor.backendKind(module.targetBackend) == inputKind && module.binaryKind == outputKind
return module.backendKind == inputKind && module.binaryKind == outputKind
}
}

View File

@@ -16,6 +16,7 @@ data class TestModule(
val targetPlatform: TargetPlatform,
val targetBackend: TargetBackend?,
val frontendKind: FrontendKind<*>,
val backendKind: BackendKind<*>,
val binaryKind: BinaryKind<*>,
val files: List<TestFile>,
val allDependencies: List<DependencyDescription>,

View File

@@ -1,15 +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.test.services
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.model.BackendKind
abstract class BackendKindExtractor(protected val testServices: TestServices) : TestService {
abstract fun backendKind(targetBackend: TargetBackend?): BackendKind<*>
}
val TestServices.backendKindExtractor: BackendKindExtractor by TestServices.testServiceAccessor()

View File

@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.test.model
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
@@ -34,6 +35,12 @@ object BackendKinds {
else -> null
}
}
fun fromTargetBackend(targetBackend: TargetBackend?): BackendKind<*> {
if (targetBackend == null) return BackendKind.NoBackend
return if (targetBackend.isIR) IrBackend
else ClassicBackend
}
}
object ArtifactKinds {

View File

@@ -13,13 +13,11 @@ import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.model.ResultingArtifact
import org.jetbrains.kotlin.test.preprocessors.MetaInfosCleanupPreprocessor
import org.jetbrains.kotlin.test.services.*
import org.jetbrains.kotlin.test.services.impl.TemporaryDirectoryManagerImpl
import org.jetbrains.kotlin.test.services.BackendKindExtractor
import org.jetbrains.kotlin.test.services.JUnit5Assertions
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
import org.jetbrains.kotlin.test.services.KotlinTestInfo
import org.jetbrains.kotlin.test.services.impl.BackendKindExtractorImpl
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
import org.jetbrains.kotlin.test.services.TemporaryDirectoryManager
import org.jetbrains.kotlin.test.services.impl.TemporaryDirectoryManagerImpl
import org.jetbrains.kotlin.types.AbstractTypeChecker
import org.jetbrains.kotlin.types.FlexibleTypeImpl
import org.junit.jupiter.api.BeforeEach
@@ -43,7 +41,6 @@ abstract class AbstractKotlinCompilerTest {
val defaultConfiguration: TestConfigurationBuilder.() -> Unit = {
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
useAdditionalService<BackendKindExtractor>(::BackendKindExtractorImpl)
useSourcePreprocessor(*defaultPreprocessors.toTypedArray())
useDirectives(*defaultDirectiveContainers.toTypedArray())
configureDebugFlags()

View File

@@ -7,10 +7,7 @@ package org.jetbrains.kotlin.test.services
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.TestInfrastructureInternals
import org.jetbrains.kotlin.test.model.DependencyDescription
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.DependencyRelation
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.model.*
import org.jetbrains.kotlin.test.services.impl.TestModuleStructureImpl
/**
@@ -28,8 +25,8 @@ class ModuleTransformerForSwitchingBackend(
return TestModuleStructureImpl(
listOf(
first.copy(targetBackend = backendForLib),
second.copy(targetBackend = backendForMain)
first.copy(targetBackend = backendForLib, backendKind = BackendKinds.fromTargetBackend(backendForLib)),
second.copy(targetBackend = backendForMain, backendKind = BackendKinds.fromTargetBackend(backendForMain))
),
moduleStructure.originalTestDataFiles
)

View File

@@ -32,6 +32,7 @@ class ModuleTransformerForTwoFilesBoxTests : ModuleStructureTransformer() {
module.targetPlatform,
module.targetBackend,
module.frontendKind,
module.backendKind,
module.binaryKind,
files = listOf(first) + additionalFiles,
allDependencies = emptyList(),
@@ -44,6 +45,7 @@ class ModuleTransformerForTwoFilesBoxTests : ModuleStructureTransformer() {
module.targetPlatform,
module.targetBackend,
module.frontendKind,
module.backendKind,
module.binaryKind,
files = listOf(second) + additionalFiles,
allDependencies = listOf(DependencyDescription("lib", DependencyKind.Binary, DependencyRelation.FriendDependency)),

View File

@@ -1,20 +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.test.services.impl
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.model.BackendKind
import org.jetbrains.kotlin.test.model.BackendKinds
import org.jetbrains.kotlin.test.services.BackendKindExtractor
import org.jetbrains.kotlin.test.services.TestServices
class BackendKindExtractorImpl(testServices: TestServices) : BackendKindExtractor(testServices) {
override fun backendKind(targetBackend: TargetBackend?): BackendKind<*> {
if (targetBackend == null) return BackendKind.NoBackend
return if (targetBackend.isIR) BackendKinds.IrBackend
else BackendKinds.ClassicBackend
}
}

View File

@@ -307,6 +307,7 @@ class ModuleStructureExtractorImpl(
targetPlatform = targetPlatform,
targetBackend = targetBackend,
frontendKind = currentModuleFrontendKind ?: defaultsProvider.defaultFrontend,
backendKind = BackendKinds.fromTargetBackend(targetBackend),
binaryKind = defaultsProvider.defaultArtifactKind ?: targetPlatform.toArtifactKind(),
files = filesOfCurrentModule,
allDependencies = dependenciesOfCurrentModule,

View File

@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest
import org.jetbrains.kotlin.test.services.*
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.impl.BackendKindExtractorImpl
import org.jetbrains.kotlin.test.services.impl.TemporaryDirectoryManagerImpl
import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.sourceProviders.CodegenHelpersSourceFilesProvider
@@ -37,7 +36,6 @@ abstract class AbstractVisualizerBlackBoxTest {
startingArtifactFactory = { ResultingArtifact.Source() }
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
useAdditionalService<BackendKindExtractor>(::BackendKindExtractorImpl)
useSourcePreprocessor(*AbstractKotlinCompilerTest.defaultPreprocessors.toTypedArray())
useDirectives(*AbstractKotlinCompilerTest.defaultDirectiveContainers.toTypedArray())