From de351d8bd384a7359d3ce57e07f81204c23c7be0 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Thu, 25 Feb 2021 00:36:28 +0300 Subject: [PATCH] Extract output handlers in visualiser's tests to separate files --- .../fir/AbstractFirVisualizerTest.kt | 33 +---------------- .../kotlin/visualizer/fir/FirOutputHandler.kt | 37 +++++++++++++++++++ .../psi/AbstractPsiVisualizerTest.kt | 27 +------------- .../kotlin/visualizer/psi/PsiOutputHandler.kt | 30 +++++++++++++++ 4 files changed, 69 insertions(+), 58 deletions(-) create mode 100644 compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/FirOutputHandler.kt create mode 100644 compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/PsiOutputHandler.kt diff --git a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/AbstractFirVisualizerTest.kt b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/AbstractFirVisualizerTest.kt index 02e9ec15423..4056e3640cc 100644 --- a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/AbstractFirVisualizerTest.kt +++ b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/AbstractFirVisualizerTest.kt @@ -5,45 +5,14 @@ package org.jetbrains.kotlin.visualizer.fir -import org.jetbrains.kotlin.compiler.visualizer.FirVisualizer import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade -import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact -import org.jetbrains.kotlin.test.frontend.fir.handlers.FirAnalysisHandler import org.jetbrains.kotlin.test.model.* -import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.visualizer.AbstractVisualizerTest -import org.jetbrains.kotlin.visualizer.VisualizerDirectives -import java.io.File abstract class AbstractFirVisualizerTest : AbstractVisualizerTest() { override val frontendKind: FrontendKind<*> = FrontendKinds.FIR override val frontendFacade: Constructor> = ::FirFrontendFacade + override val handler: Constructor> = ::FirOutputHandler - override val handler: Constructor> = { - object : FirAnalysisHandler(it) { - override fun processModule(module: TestModule, info: FirOutputArtifact) { - val renderer = FirVisualizer(info.firFiles.values.first()) - val firRenderResult = renderer.render() - - val replaceFrom = module.directives[VisualizerDirectives.TEST_FILE_PATH].first() - val replaceTo = module.directives[VisualizerDirectives.EXPECTED_FILE_PATH].first() - val path = module.files.first().originalFile.absolutePath.replace(replaceFrom, replaceTo) - val expectedText = File(path).readLines() - if (expectedText[0].startsWith("// FIR_IGNORE")) { - assertions.assertFalse(expectedText.drop(1).joinToString("\n") == firRenderResult.trim()) { - "Files are identical, please delete ignore directive" - } - return - } - assertions.assertEqualsToFile(File(path), firRenderResult) { text -> - text.replace("// FIR_IGNORE\n", "") - } - } - - override fun processAfterAllModules(someAssertionWasFailed: Boolean) { - - } - } - } } diff --git a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/FirOutputHandler.kt b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/FirOutputHandler.kt new file mode 100644 index 00000000000..6f04d0e78f7 --- /dev/null +++ b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/FirOutputHandler.kt @@ -0,0 +1,37 @@ +/* + * 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.fir + +import org.jetbrains.kotlin.compiler.visualizer.FirVisualizer +import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact +import org.jetbrains.kotlin.test.frontend.fir.handlers.FirAnalysisHandler +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.visualizer.VisualizerDirectives +import java.io.File + +internal class FirOutputHandler(testServices: TestServices) : FirAnalysisHandler(testServices) { + override fun processModule(module: TestModule, info: FirOutputArtifact) { + val renderer = FirVisualizer(info.firFiles.values.first()) + val firRenderResult = renderer.render() + + val replaceFrom = module.directives[VisualizerDirectives.TEST_FILE_PATH].first() + val replaceTo = module.directives[VisualizerDirectives.EXPECTED_FILE_PATH].first() + val path = module.files.first().originalFile.absolutePath.replace(replaceFrom, replaceTo) + val expectedText = File(path).readLines() + if (expectedText[0].startsWith("// FIR_IGNORE")) { + assertions.assertFalse(expectedText.drop(1).joinToString("\n") == firRenderResult.trim()) { + "Files are identical, please delete ignore directive" + } + return + } + assertions.assertEqualsToFile(File(path), firRenderResult) { text -> + text.replace("// FIR_IGNORE\n", "") + } + } + + override fun processAfterAllModules(someAssertionWasFailed: Boolean) {} +} \ No newline at end of file diff --git a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/AbstractPsiVisualizerTest.kt b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/AbstractPsiVisualizerTest.kt index 11f4eb12836..e0334f6f0b6 100644 --- a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/AbstractPsiVisualizerTest.kt +++ b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/AbstractPsiVisualizerTest.kt @@ -5,38 +5,13 @@ package org.jetbrains.kotlin.visualizer.psi -import org.jetbrains.kotlin.compiler.visualizer.PsiVisualizer import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade -import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact -import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicFrontendAnalysisHandler import org.jetbrains.kotlin.test.model.* -import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.visualizer.AbstractVisualizerTest -import org.jetbrains.kotlin.visualizer.VisualizerDirectives -import java.io.File abstract class AbstractPsiVisualizerTest : AbstractVisualizerTest() { override val frontendKind: FrontendKind<*> = FrontendKinds.ClassicFrontend override val frontendFacade: Constructor> = ::ClassicFrontendFacade - - override val handler: Constructor> = { - object : ClassicFrontendAnalysisHandler(it) { - override fun processModule(module: TestModule, info: ClassicFrontendOutputArtifact) { - val renderer = PsiVisualizer(info.ktFiles.values.first(), info.analysisResult) - val psiRenderResult = renderer.render() - - val replaceFrom = module.directives[VisualizerDirectives.TEST_FILE_PATH].first() - val replaceTo = module.directives[VisualizerDirectives.EXPECTED_FILE_PATH].first() - val path = module.files.first().originalFile.absolutePath.replace(replaceFrom, replaceTo) - assertions.assertEqualsToFile(File(path), psiRenderResult) { text -> - text.replace("// FIR_IGNORE\n", "") - } - } - - override fun processAfterAllModules(someAssertionWasFailed: Boolean) { - - } - } - } + override val handler: Constructor> = ::PsiOutputHandler } diff --git a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/PsiOutputHandler.kt b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/PsiOutputHandler.kt new file mode 100644 index 00000000000..8b343dcfd36 --- /dev/null +++ b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/PsiOutputHandler.kt @@ -0,0 +1,30 @@ +/* + * 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.psi + +import org.jetbrains.kotlin.compiler.visualizer.PsiVisualizer +import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact +import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicFrontendAnalysisHandler +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.visualizer.VisualizerDirectives +import java.io.File + +internal class PsiOutputHandler(testServices: TestServices) : ClassicFrontendAnalysisHandler(testServices) { + override fun processModule(module: TestModule, info: ClassicFrontendOutputArtifact) { + val renderer = PsiVisualizer(info.ktFiles.values.first(), info.analysisResult) + val psiRenderResult = renderer.render() + + val replaceFrom = module.directives[VisualizerDirectives.TEST_FILE_PATH].first() + val replaceTo = module.directives[VisualizerDirectives.EXPECTED_FILE_PATH].first() + val path = module.files.first().originalFile.absolutePath.replace(replaceFrom, replaceTo) + assertions.assertEqualsToFile(File(path), psiRenderResult) { text -> + text.replace("// FIR_IGNORE\n", "") + } + } + + override fun processAfterAllModules(someAssertionWasFailed: Boolean) {} +} \ No newline at end of file