[Test] Introduce single interface for all entities which provides directive containers and test services

This commit is contained in:
Dmitriy Novozhilov
2021-07-20 12:47:55 +03:00
committed by teamcityserver
parent b42d6a3e85
commit ba48f80e53
43 changed files with 79 additions and 93 deletions
@@ -6,13 +6,9 @@
package org.jetbrains.kotlin.test.model
import org.jetbrains.kotlin.test.WrappedException
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.services.TestServices
abstract class AfterAnalysisChecker(protected val testServices: TestServices) {
open val directives: List<DirectivesContainer>
get() = emptyList()
abstract class AfterAnalysisChecker(protected val testServices: TestServices) : ServicesAndDirectivesContainer {
open fun check(failedAssertions: List<WrappedException>) {}
open fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> = failedAssertions
@@ -6,8 +6,6 @@
package org.jetbrains.kotlin.test.model
import org.jetbrains.kotlin.test.Assertions
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.assertions
@@ -15,16 +13,10 @@ abstract class AnalysisHandler<A : ResultingArtifact<A>>(
val testServices: TestServices,
val failureDisablesNextSteps: Boolean,
val doNotRunIfThereWerePreviousFailures: Boolean
) {
) : ServicesAndDirectivesContainer {
protected val assertions: Assertions
get() = testServices.assertions
open val directivesContainers: List<DirectivesContainer>
get() = emptyList()
open val additionalServices: List<ServiceRegistrationData>
get() = emptyList()
abstract val artifactKind: TestArtifactKind<A>
abstract fun processModule(module: TestModule, info: A)
@@ -9,17 +9,19 @@ import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.services.ServiceRegistrationData
import org.jetbrains.kotlin.test.services.TestServices
abstract class AbstractTestFacade<I : ResultingArtifact<I>, O : ResultingArtifact<O>> {
interface ServicesAndDirectivesContainer {
val additionalServices: List<ServiceRegistrationData>
get() = emptyList()
val directiveContainers: List<DirectivesContainer>
get() = emptyList()
}
abstract class AbstractTestFacade<I : ResultingArtifact<I>, O : ResultingArtifact<O>> : ServicesAndDirectivesContainer {
abstract val inputKind: TestArtifactKind<I>
abstract val outputKind: TestArtifactKind<O>
abstract fun transform(module: TestModule, inputArtifact: I): O?
open val additionalServices: List<ServiceRegistrationData>
get() = emptyList()
open val additionalDirectives: List<DirectivesContainer>
get() = emptyList()
}
abstract class FrontendFacade<R : ResultingArtifact.FrontendOutput<R>>(
@@ -5,17 +5,14 @@
package org.jetbrains.kotlin.test.services
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
import org.jetbrains.kotlin.test.directives.model.SimpleDirective
import org.jetbrains.kotlin.test.model.ServicesAndDirectivesContainer
import org.jetbrains.kotlin.test.model.TestFile
import org.jetbrains.kotlin.test.model.TestModule
import java.io.File
abstract class AdditionalSourceProvider(val testServices: TestServices) {
open val directives: List<DirectivesContainer>
get() = emptyList()
abstract class AdditionalSourceProvider(val testServices: TestServices) : ServicesAndDirectivesContainer {
/**
* Note that you can not use [testServices.moduleStructure] here because it's not initialized yet
*/
@@ -10,16 +10,14 @@ import org.jetbrains.kotlin.config.AnalysisFlag
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.CompilerConfigurationKey
import org.jetbrains.kotlin.config.LanguageVersion
import org.jetbrains.kotlin.test.directives.model.*
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
import org.jetbrains.kotlin.test.directives.model.SimpleDirective
import org.jetbrains.kotlin.test.directives.model.ValueDirective
import org.jetbrains.kotlin.test.directives.model.singleOrZeroValue
import org.jetbrains.kotlin.test.model.ServicesAndDirectivesContainer
import org.jetbrains.kotlin.test.model.TestModule
abstract class EnvironmentConfigurator(protected val testServices: TestServices) {
open val directivesContainers: List<DirectivesContainer>
get() = emptyList()
open val additionalServices: List<ServiceRegistrationData>
get() = emptyList()
abstract class EnvironmentConfigurator(protected val testServices: TestServices) : ServicesAndDirectivesContainer {
protected val moduleStructure: TestModuleStructure
get() = testServices.moduleStructure
@@ -5,12 +5,9 @@
package org.jetbrains.kotlin.test.services
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
abstract class MetaTestConfigurator(protected val testServices: TestServices) {
open val directives: List<DirectivesContainer>
get() = emptyList()
import org.jetbrains.kotlin.test.model.ServicesAndDirectivesContainer
abstract class MetaTestConfigurator(protected val testServices: TestServices) : ServicesAndDirectivesContainer {
open fun transformTestDataPath(testDataFileName: String): String = testDataFileName
open fun shouldSkipTest(): Boolean = false