[VISUALIZER] Add new visualizer tests processing codegen box test data
This commit is contained in:
committed by
TeamCityServer
parent
427a1295c8
commit
0f70ec032d
+7
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.test.runners.*
|
||||
import org.jetbrains.kotlin.test.runners.codegen.*
|
||||
import org.jetbrains.kotlin.test.runners.ir.AbstractFir2IrTextTest
|
||||
import org.jetbrains.kotlin.test.runners.ir.AbstractIrTextTest
|
||||
import org.jetbrains.kotlin.visualizer.AbstractVisualizerBlackBoxTest
|
||||
import org.jetbrains.kotlin.visualizer.fir.AbstractFirVisualizerTest
|
||||
import org.jetbrains.kotlin.visualizer.psi.AbstractPsiVisualizerTest
|
||||
import org.junit.jupiter.api.parallel.Execution
|
||||
@@ -177,5 +178,11 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
|
||||
model("uncommonCases/testFiles")
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("compiler/visualizer/tests-gen", "compiler/testData") {
|
||||
testClass<AbstractVisualizerBlackBoxTest>() {
|
||||
model("codegen/box")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+40942
File diff suppressed because it is too large
Load Diff
+79
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright 2010-2021 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.visualizer
|
||||
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
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
|
||||
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
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
|
||||
import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider
|
||||
|
||||
abstract class AbstractVisualizerBlackBoxTest {
|
||||
private val commonConfiguration: TestConfigurationBuilder.() -> Unit = {
|
||||
assertions = JUnit5Assertions
|
||||
testInfo = KotlinTestInfo("_undefined_", "_testUndefined_", setOf())
|
||||
|
||||
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
|
||||
useAdditionalService<BackendKindExtractor>(::BackendKindExtractorImpl)
|
||||
useSourcePreprocessor(*AbstractKotlinCompilerTest.defaultPreprocessors.toTypedArray())
|
||||
useDirectives(*AbstractKotlinCompilerTest.defaultDirectiveContainers.toTypedArray())
|
||||
|
||||
globalDefaults {
|
||||
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||
dependencyKind = DependencyKind.Source
|
||||
}
|
||||
|
||||
defaultDirectives {
|
||||
+JvmEnvironmentConfigurationDirectives.WITH_STDLIB
|
||||
}
|
||||
|
||||
useConfigurators(
|
||||
::CommonEnvironmentConfigurator,
|
||||
::JvmEnvironmentConfigurator,
|
||||
)
|
||||
|
||||
useFrontendFacades(
|
||||
::ClassicFrontendFacade,
|
||||
::FirFrontendFacade
|
||||
)
|
||||
|
||||
useAdditionalSourceProviders(
|
||||
::AdditionalDiagnosticsSourceFilesProvider,
|
||||
::CoroutineHelpersSourceFilesProvider,
|
||||
::CodegenHelpersSourceFilesProvider
|
||||
)
|
||||
}
|
||||
|
||||
fun runTest(filePath: String) {
|
||||
val psiConfiguration = testConfiguration(filePath) {
|
||||
commonConfiguration()
|
||||
globalDefaults { frontend = FrontendKinds.ClassicFrontend }
|
||||
}
|
||||
TestRunner(psiConfiguration).runTest(filePath)
|
||||
|
||||
val firConfiguration = testConfiguration(filePath) {
|
||||
commonConfiguration()
|
||||
globalDefaults { frontend = FrontendKinds.FIR }
|
||||
}
|
||||
TestRunner(firConfiguration).runTest(filePath)
|
||||
|
||||
VisualizerBlackBoxHandler(psiConfiguration.testServices, firConfiguration.testServices).process()
|
||||
}
|
||||
}
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2010-2021 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.visualizer
|
||||
|
||||
import org.jetbrains.kotlin.compiler.visualizer.FirVisualizer
|
||||
import org.jetbrains.kotlin.compiler.visualizer.PsiVisualizer
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.assertions
|
||||
import org.jetbrains.kotlin.test.services.dependencyProvider
|
||||
|
||||
class VisualizerBlackBoxHandler(private val psiTestServices: TestServices, private val firTestServices: TestServices) {
|
||||
private val assertions = psiTestServices.assertions
|
||||
|
||||
fun process() {
|
||||
val psiDependencyProvider = psiTestServices.dependencyProvider
|
||||
val psiModule = psiDependencyProvider.getTestModule("main")
|
||||
val psiArtifact = psiDependencyProvider.getArtifact(psiModule, FrontendKinds.ClassicFrontend)
|
||||
|
||||
val firDependencyProvider = firTestServices.dependencyProvider
|
||||
val firModule = firDependencyProvider.getTestModule("main")
|
||||
val firArtifact = firDependencyProvider.getArtifact(firModule, FrontendKinds.FIR)
|
||||
|
||||
val psiRenderer = psiArtifact.ktFiles.values.firstOrNull()?.let { PsiVisualizer(it, psiArtifact.analysisResult) } ?: return
|
||||
val psiRenderResult = psiRenderer.render()
|
||||
|
||||
val firRenderer = firArtifact.firFiles.values.firstOrNull()?.let { FirVisualizer(it) } ?: return
|
||||
val firRenderResult = firRenderer.render()
|
||||
|
||||
assertions.assertEquals(psiRenderResult, firRenderResult)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user