[Test] Replace three fixed phases of tests with step system
Now each test is just a sequence of any number of different steps. There are two kinds of steps: 1. Run some facade 2. Run handlers of specific artifact kind Through the test each module passed to each step (if it is compatible by kinds of artifacts)
This commit is contained in:
committed by
teamcityserver
parent
ba48f80e53
commit
a66f3d26fd
+12
-13
@@ -8,8 +8,9 @@ package org.jetbrains.kotlin.visualizer
|
||||
import org.jetbrains.kotlin.compiler.visualizer.FirVisualizer
|
||||
import org.jetbrains.kotlin.compiler.visualizer.PsiVisualizer
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.test.Constructor
|
||||
import org.jetbrains.kotlin.test.TestConfiguration
|
||||
import org.jetbrains.kotlin.test.TestRunner
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.builders.testConfiguration
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
|
||||
@@ -26,9 +27,14 @@ import org.jetbrains.kotlin.test.services.sourceProviders.CodegenHelpersSourceFi
|
||||
import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider
|
||||
|
||||
abstract class AbstractVisualizerBlackBoxTest {
|
||||
private val commonConfiguration: TestConfigurationBuilder.() -> Unit = {
|
||||
private fun <O : ResultingArtifact.FrontendOutput<O>> createConfiguration(
|
||||
filePath: String,
|
||||
frontendKind: FrontendKind<O>,
|
||||
frontendFacade: Constructor<FrontendFacade<O>>
|
||||
): TestConfiguration = testConfiguration(filePath) {
|
||||
assertions = JUnit5Assertions
|
||||
testInfo = KotlinTestInfo("_undefined_", "_testUndefined_", setOf())
|
||||
startingArtifactFactory = { ResultingArtifact.Source() }
|
||||
|
||||
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
|
||||
useAdditionalService<BackendKindExtractor>(::BackendKindExtractorImpl)
|
||||
@@ -38,6 +44,7 @@ abstract class AbstractVisualizerBlackBoxTest {
|
||||
globalDefaults {
|
||||
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||
dependencyKind = DependencyKind.Source
|
||||
frontend = frontendKind
|
||||
}
|
||||
|
||||
defaultDirectives {
|
||||
@@ -49,28 +56,20 @@ abstract class AbstractVisualizerBlackBoxTest {
|
||||
::JvmEnvironmentConfigurator,
|
||||
)
|
||||
|
||||
useFrontendFacades(
|
||||
::ClassicFrontendFacade,
|
||||
::FirFrontendFacade
|
||||
)
|
||||
|
||||
useAdditionalSourceProviders(
|
||||
::AdditionalDiagnosticsSourceFilesProvider,
|
||||
::CoroutineHelpersSourceFilesProvider,
|
||||
::CodegenHelpersSourceFilesProvider
|
||||
)
|
||||
}
|
||||
|
||||
private fun createConfiguration(filePath: String, frontend: FrontendKind<*>) = testConfiguration(filePath) {
|
||||
commonConfiguration()
|
||||
globalDefaults { this.frontend = frontend }
|
||||
facadeStep(frontendFacade)
|
||||
}
|
||||
|
||||
fun runTest(filePath: String) {
|
||||
lateinit var psiRenderResult: String
|
||||
lateinit var firRenderResult: String
|
||||
|
||||
val psiConfiguration = createConfiguration(filePath, FrontendKinds.ClassicFrontend)
|
||||
val psiConfiguration = createConfiguration(filePath, FrontendKinds.ClassicFrontend, ::ClassicFrontendFacade)
|
||||
TestRunner(psiConfiguration).runTest(filePath) { testConfiguration ->
|
||||
testConfiguration.testServices.moduleStructure.modules.forEach { psiModule ->
|
||||
val psiArtifact = testConfiguration.testServices.dependencyProvider.getArtifact(psiModule, FrontendKinds.ClassicFrontend)
|
||||
@@ -79,7 +78,7 @@ abstract class AbstractVisualizerBlackBoxTest {
|
||||
}
|
||||
}
|
||||
|
||||
val firConfiguration = createConfiguration(filePath, FrontendKinds.FIR)
|
||||
val firConfiguration = createConfiguration(filePath, FrontendKinds.FIR, ::FirFrontendFacade)
|
||||
TestRunner(firConfiguration).runTest(filePath) { testConfiguration ->
|
||||
testConfiguration.testServices.moduleStructure.modules.forEach { firModule ->
|
||||
val firArtifact = testConfiguration.testServices.dependencyProvider.getArtifact(firModule, FrontendKinds.FIR)
|
||||
|
||||
@@ -33,11 +33,12 @@ abstract class AbstractVisualizerTest : AbstractKotlinCompilerTest() {
|
||||
::CommonEnvironmentConfigurator,
|
||||
::JvmEnvironmentConfigurator,
|
||||
)
|
||||
useFrontendFacades(
|
||||
::FirFrontendFacade,
|
||||
::ClassicFrontendFacade
|
||||
)
|
||||
useFrontendHandlers(handler)
|
||||
// TODO
|
||||
// useFrontendFacades(
|
||||
// ::FirFrontendFacade,
|
||||
// ::ClassicFrontendFacade
|
||||
// )
|
||||
// useFrontendHandlers(handler)
|
||||
|
||||
defaultDirectives {
|
||||
+JvmEnvironmentConfigurationDirectives.WITH_STDLIB
|
||||
|
||||
Reference in New Issue
Block a user