From fea7c42733a339ed19fc7471bb064f53de71cc6b Mon Sep 17 00:00:00 2001 From: Marcin Aman Date: Thu, 17 Dec 2020 12:14:40 +0100 Subject: Multimodule tests (#1670) * Multimodule tests * Multimodule tests --- .../test/kotlin/MultiModuleDokkaTestGenerator.kt | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 plugins/all-modules-page/src/test/kotlin/MultiModuleDokkaTestGenerator.kt (limited to 'plugins/all-modules-page/src/test/kotlin/MultiModuleDokkaTestGenerator.kt') diff --git a/plugins/all-modules-page/src/test/kotlin/MultiModuleDokkaTestGenerator.kt b/plugins/all-modules-page/src/test/kotlin/MultiModuleDokkaTestGenerator.kt new file mode 100644 index 00000000..c8542dfe --- /dev/null +++ b/plugins/all-modules-page/src/test/kotlin/MultiModuleDokkaTestGenerator.kt @@ -0,0 +1,81 @@ +package org.jetbrains.dokka.allModulesPage + +import org.jetbrains.dokka.CoreExtensions +import org.jetbrains.dokka.DokkaConfiguration +import org.jetbrains.dokka.DokkaGenerator +import org.jetbrains.dokka.pages.RootPageNode +import org.jetbrains.dokka.plugability.DokkaContext +import org.jetbrains.dokka.plugability.DokkaPlugin +import org.jetbrains.dokka.testApi.logger.TestLogger +import org.jetbrains.dokka.testApi.testRunner.AbstractTest +import org.jetbrains.dokka.testApi.testRunner.DokkaTestGenerator +import org.jetbrains.dokka.testApi.testRunner.TestBuilder +import org.jetbrains.dokka.testApi.testRunner.TestMethods +import org.jetbrains.dokka.utilities.DokkaConsoleLogger +import org.jetbrains.dokka.utilities.DokkaLogger + +class MultiModuleDokkaTestGenerator( + configuration: DokkaConfiguration, + logger: DokkaLogger, + testMethods: MultiModuleTestMethods, + additionalPlugins: List = emptyList() +) : DokkaTestGenerator( + configuration, + logger, + testMethods, + additionalPlugins + AllModulesPagePlugin() +) { + override fun generate() = with(testMethods) { + val dokkaGenerator = DokkaGenerator(configuration, logger) + + val context = + dokkaGenerator.initializePlugins(configuration, logger, additionalPlugins + AllModulesPagePlugin()) + pluginsSetupStage(context) + + val generation = context.single(CoreExtensions.generation) as AllModulesPageGeneration + + val allModulesPage = generation.createAllModulesPage() + allModulesPageCreationStage(allModulesPage) + + val transformedPages = generation.transformAllModulesPage(allModulesPage) + pagesTransformationStage(transformedPages) + + generation.render(transformedPages) + renderingStage(transformedPages, context) + + generation.processSubmodules() + submoduleProcessingStage(context) + } + +} + +open class MultiModuleTestMethods( + open val pluginsSetupStage: (DokkaContext) -> Unit, + open val allModulesPageCreationStage: (RootPageNode) -> Unit, + open val pagesTransformationStage: (RootPageNode) -> Unit, + open val renderingStage: (RootPageNode, DokkaContext) -> Unit, + open val submoduleProcessingStage: (DokkaContext) -> Unit, +) : TestMethods + +class MultiModuleTestBuilder : TestBuilder() { + var pluginsSetupStage: (DokkaContext) -> Unit = {} + var allModulesPageCreationStage: (RootPageNode) -> Unit = {} + var pagesTransformationStage: (RootPageNode) -> Unit = {} + var renderingStage: (RootPageNode, DokkaContext) -> Unit = { _, _ -> } + var submoduleProcessingStage: (DokkaContext) -> Unit = {} + + override fun build() = MultiModuleTestMethods( + pluginsSetupStage, + allModulesPageCreationStage, + pagesTransformationStage, + renderingStage, + submoduleProcessingStage, + ) +} + +abstract class MultiModuleAbstractTest(logger: TestLogger = TestLogger(DokkaConsoleLogger)) : + AbstractTest( + ::MultiModuleTestBuilder, + ::MultiModuleDokkaTestGenerator, + logger, + ) -- cgit