From 154c3f0d83ea5f9990a06962ba8cfc36a832e04d Mon Sep 17 00:00:00 2001 From: Szymon Świstun Date: Tue, 21 Jan 2020 16:19:18 +0100 Subject: tests moved to :testApi module --- testApi/build.gradle | 12 ++ .../testApi/testRunner/DokkaTestGenerator.kt | 41 ++++ .../main/kotlin/testApi/testRunner/TestRunner.kt | 207 +++++++++++++++++++++ 3 files changed, 260 insertions(+) create mode 100644 testApi/build.gradle create mode 100644 testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt create mode 100644 testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt (limited to 'testApi') diff --git a/testApi/build.gradle b/testApi/build.gradle new file mode 100644 index 00000000..5425b7bc --- /dev/null +++ b/testApi/build.gradle @@ -0,0 +1,12 @@ +buildscript { + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} +apply plugin: 'kotlin' + +dependencies { + implementation project(':core') + implementation group: 'junit', name: 'junit', version: '4.12' + implementation group: 'org.jetbrains.kotlin', name: 'kotlin-test-junit', version: kotlin_version +} \ No newline at end of file diff --git a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt new file mode 100644 index 00000000..50e88f2b --- /dev/null +++ b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt @@ -0,0 +1,41 @@ +package testApi.testRunner + +import org.jetbrains.dokka.DokkaConfiguration +import org.jetbrains.dokka.DokkaGenerator +import org.jetbrains.dokka.EnvironmentAndFacade +import org.jetbrains.dokka.pages.PlatformData +import org.jetbrains.dokka.utilities.DokkaLogger + +internal class DokkaTestGenerator( + private val configuration: DokkaConfiguration, + private val logger: DokkaLogger, + private val testMethods: TestMethods +) { + + fun generate() = with(testMethods) { + val dokkaGenerator = DokkaGenerator(configuration, logger) + + val platforms: Map = dokkaGenerator.setUpAnalysis(configuration) + analysisSetupStage(platforms) + + val context = dokkaGenerator.initializePlugins(configuration, logger, platforms) + pluginsSetupStage(context) + + val modulesFromPlatforms = dokkaGenerator.createDocumentationModels(platforms, context) + documentablesCreationStage(modulesFromPlatforms) + + val documentationModel = dokkaGenerator.mergeDocumentationModels(modulesFromPlatforms, context) + documentablesMergingStage(documentationModel) + + val transformedDocumentation = dokkaGenerator.transformDocumentationModel(documentationModel, context) + documentablesTransformationStage(transformedDocumentation) + + val pages = dokkaGenerator.createPages(transformedDocumentation, context) + pagesGenerationStage(pages) + + val transformedPages = dokkaGenerator.transformPages(pages, context) + pagesTransformationStage(transformedPages) + + dokkaGenerator.render(transformedPages, context) + } +} \ No newline at end of file diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt new file mode 100644 index 00000000..fdc2d0f7 --- /dev/null +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -0,0 +1,207 @@ +package testApi.testRunner + +import org.jetbrains.dokka.* +import org.jetbrains.dokka.model.Module +import org.jetbrains.dokka.pages.ModulePageNode +import org.jetbrains.dokka.pages.PlatformData +import org.jetbrains.dokka.plugability.DokkaContext +import org.jetbrains.dokka.utilities.DokkaConsoleLogger +import org.junit.rules.TemporaryFolder +import java.io.File +import java.nio.charset.Charset +import java.nio.file.Files +import java.nio.file.InvalidPathException +import java.nio.file.Path +import java.nio.file.Paths + +// TODO: take dokka configuration from file +abstract class AbstractCoreTest { + protected val logger = DokkaConsoleLogger + + protected fun getTestDataDir(name: String) = + File("src/test/resources/$name").takeIf { it.exists() }?.toPath() + ?: throw InvalidPathException(name, "Cannot be found") + + protected fun testFromData( + configuration: DokkaConfigurationImpl, + cleanupOutput: Boolean = true, + block: TestBuilder.() -> Unit + ) { + val testMethods = TestBuilder().apply(block).build() + val tempDir = getTempDir(cleanupOutput) + if (!cleanupOutput) + logger.info("Output generated under: ${tempDir.root.absolutePath}") + val newConfiguration = + configuration.copy( + outputDir = tempDir.root.toPath().toAbsolutePath().toString() + ) + DokkaTestGenerator(newConfiguration, logger, testMethods).generate() + } + + protected fun testInline( + query: String, + configuration: DokkaConfigurationImpl, + cleanupOutput: Boolean = true, + block: TestBuilder.() -> Unit + ) { + val testMethods = TestBuilder().apply(block).build() + val testDirPath = getTempDir(cleanupOutput).root.toPath() + val fileMap = query.toFileMap() + fileMap.materializeFiles(testDirPath.toAbsolutePath()) + if (!cleanupOutput) + logger.info("Output generated under: ${testDirPath.toAbsolutePath()}") + val newConfiguration = + configuration.copy( + outputDir = testDirPath.toAbsolutePath().toString(), + passesConfigurations = configuration.passesConfigurations + .map { it.copy(sourceRoots = it.sourceRoots.map { it.copy(path = "${testDirPath.toAbsolutePath()}/${it.path}") }) } + ) + DokkaTestGenerator(newConfiguration, logger, testMethods).generate() + } + + private fun String.toFileMap(): Map = this.trimMargin().removePrefix("|") + .replace("\r\n", "\n") + .split("\n/") + .map { fileString -> + fileString.split("\n", limit = 2) + .let { + it.first().trim().removePrefix("/") to it.last().trim() + } + }.toMap() + + private fun Map.materializeFiles( + root: Path = Paths.get("."), + charset: Charset = Charset.forName("utf-8") + ) = this.map { (path, content) -> + val file = root.resolve(path) + Files.createDirectories(file.parent) + Files.write(file, content.toByteArray(charset)) + } + + private fun getTempDir(cleanupOutput: Boolean) = if (cleanupOutput) { + TemporaryFolder().apply { create() } + } else { + object : TemporaryFolder() { + override fun after() {} + }.apply { create() } + } + + protected class TestBuilder { + var analysisSetupStage: (Map) -> Unit = {} + var pluginsSetupStage: (DokkaContext) -> Unit = {} + var documentablesCreationStage: (List) -> Unit = {} + var documentablesMergingStage: (Module) -> Unit = {} + var documentablesTransformationStage: (Module) -> Unit = {} + var pagesGenerationStage: (ModulePageNode) -> Unit = {} + var pagesTransformationStage: (ModulePageNode) -> Unit = {} + + fun build() = TestMethods( + analysisSetupStage, + pluginsSetupStage, + documentablesCreationStage, + documentablesMergingStage, + documentablesTransformationStage, + pagesGenerationStage, + pagesTransformationStage + ) + } + + protected fun dokkaConfiguration(block: DokkaConfigurationBuilder.() -> Unit): DokkaConfigurationImpl = + DokkaConfigurationBuilder().apply(block).build() + + @DslMarker + protected annotation class DokkaConfigurationDsl + + @DokkaConfigurationDsl + protected class DokkaConfigurationBuilder { + var outputDir: String = "out" + var format: String = "html" + var generateIndexPages: Boolean = true + var cacheRoot: String? = null + var pluginsClasspath: List = emptyList() + private val passesConfigurations = mutableListOf() + + fun build() = DokkaConfigurationImpl( + outputDir = outputDir, + format = format, + generateIndexPages = generateIndexPages, + cacheRoot = cacheRoot, + impliedPlatforms = emptyList(), + passesConfigurations = passesConfigurations, + pluginsClasspath = pluginsClasspath + ) + + fun passes(block: Passes.() -> Unit) { + passesConfigurations.addAll(Passes().apply(block)) + } + } + + @DokkaConfigurationDsl + protected class Passes : ArrayList() { + fun pass(block: DokkaPassConfigurationBuilder.() -> Unit) = + add(DokkaPassConfigurationBuilder().apply(block).build()) + } + + @DokkaConfigurationDsl + protected class DokkaPassConfigurationBuilder( + var moduleName: String = "root", + var classpath: List = emptyList(), + var sourceRoots: List = emptyList(), + var samples: List = emptyList(), + var includes: List = emptyList(), + var includeNonPublic: Boolean = true, + var includeRootPackage: Boolean = true, + var reportUndocumented: Boolean = false, + var skipEmptyPackages: Boolean = false, + var skipDeprecated: Boolean = false, + var jdkVersion: Int = 6, + var languageVersion: String? = null, + var apiVersion: String? = null, + var noStdlibLink: Boolean = false, + var noJdkLink: Boolean = false, + var suppressedFiles: List = emptyList(), + var collectInheritedExtensionsFromLibraries: Boolean = true, + var analysisPlatform: String = "jvm", + var targets: List = listOf("jvm"), + var sinceKotlin: String? = null, + var perPackageOptions: List = emptyList(), + var externalDocumentationLinks: List = emptyList(), + var sourceLinks: List = emptyList() + ) { + fun build() = PassConfigurationImpl( + moduleName = moduleName, + classpath = classpath, + sourceRoots = sourceRoots.map { SourceRootImpl(it) }, + samples = samples, + includes = includes, + includeNonPublic = includeNonPublic, + includeRootPackage = includeRootPackage, + reportUndocumented = reportUndocumented, + skipEmptyPackages = skipEmptyPackages, + skipDeprecated = skipDeprecated, + jdkVersion = jdkVersion, + languageVersion = languageVersion, + apiVersion = apiVersion, + noStdlibLink = noStdlibLink, + noJdkLink = noJdkLink, + suppressedFiles = suppressedFiles, + collectInheritedExtensionsFromLibraries = collectInheritedExtensionsFromLibraries, + analysisPlatform = Platform.fromString(analysisPlatform), + targets = targets, + sinceKotlin = sinceKotlin, + perPackageOptions = perPackageOptions, + externalDocumentationLinks = externalDocumentationLinks, + sourceLinks = sourceLinks + ) + } +} + +data class TestMethods( + val analysisSetupStage: (Map) -> Unit, + val pluginsSetupStage: (DokkaContext) -> Unit, + val documentablesCreationStage: (List) -> Unit, + val documentablesMergingStage: (Module) -> Unit, + val documentablesTransformationStage: (Module) -> Unit, + val pagesGenerationStage: (ModulePageNode) -> Unit, + val pagesTransformationStage: (ModulePageNode) -> Unit +) \ No newline at end of file -- cgit From 885ecd28153b484277c9ddcbf4a7f9d761a59545 Mon Sep 17 00:00:00 2001 From: Paweł Marks Date: Mon, 27 Jan 2020 09:34:16 +0100 Subject: Unifing model for pages with content ant technical renderer specific pages --- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index fdc2d0f7..fa61bf59 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -4,6 +4,7 @@ import org.jetbrains.dokka.* import org.jetbrains.dokka.model.Module import org.jetbrains.dokka.pages.ModulePageNode import org.jetbrains.dokka.pages.PlatformData +import org.jetbrains.dokka.pages.RootPageNode import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.utilities.DokkaConsoleLogger import org.junit.rules.TemporaryFolder @@ -93,7 +94,7 @@ abstract class AbstractCoreTest { var documentablesMergingStage: (Module) -> Unit = {} var documentablesTransformationStage: (Module) -> Unit = {} var pagesGenerationStage: (ModulePageNode) -> Unit = {} - var pagesTransformationStage: (ModulePageNode) -> Unit = {} + var pagesTransformationStage: (RootPageNode) -> Unit = {} fun build() = TestMethods( analysisSetupStage, @@ -203,5 +204,5 @@ data class TestMethods( val documentablesMergingStage: (Module) -> Unit, val documentablesTransformationStage: (Module) -> Unit, val pagesGenerationStage: (ModulePageNode) -> Unit, - val pagesTransformationStage: (ModulePageNode) -> Unit + val pagesTransformationStage: (RootPageNode) -> Unit ) \ No newline at end of file -- cgit From e99be615ce7c2c2b5c3ee5e3f8941c41c1e7a944 Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Fri, 31 Jan 2020 00:37:29 +0100 Subject: Bump Gradle version, migrate to Kotlin DSL, refactor publishing --- testApi/build.gradle | 12 ------------ testApi/build.gradle.kts | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 12 deletions(-) delete mode 100644 testApi/build.gradle create mode 100644 testApi/build.gradle.kts (limited to 'testApi') diff --git a/testApi/build.gradle b/testApi/build.gradle deleted file mode 100644 index 5425b7bc..00000000 --- a/testApi/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -buildscript { - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} -apply plugin: 'kotlin' - -dependencies { - implementation project(':core') - implementation group: 'junit', name: 'junit', version: '4.12' - implementation group: 'org.jetbrains.kotlin', name: 'kotlin-test-junit', version: kotlin_version -} \ No newline at end of file diff --git a/testApi/build.gradle.kts b/testApi/build.gradle.kts new file mode 100644 index 00000000..db861b90 --- /dev/null +++ b/testApi/build.gradle.kts @@ -0,0 +1,29 @@ +import org.jetbrains.configureBintrayPublication + +plugins { + `maven-publish` + id("com.jfrog.bintray") +} + +dependencies { + implementation(project(":core")) + implementation("junit:junit:4.13") // TODO: remove dependency to junit + implementation(kotlin("stdlib")) +} + +val sourceJar by tasks.registering(Jar::class) { + archiveClassifier.set("sources") + from(sourceSets["main"].allSource) +} + +publishing { + publications { + register("dokkaTestAPI") { + artifactId = "dokka-test-api" + components["java"] + artifact(sourceJar.get()) + } + } +} + +configureBintrayPublication("dokkaTestAPI") \ No newline at end of file -- cgit From 2a60f8adbab66e7b671949960c7cd90ea86992d7 Mon Sep 17 00:00:00 2001 From: Szymon Świstun Date: Tue, 11 Feb 2020 17:01:06 +0100 Subject: plugin overrides --- testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt | 6 ++++-- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt index 50e88f2b..21bbe72d 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt @@ -4,12 +4,14 @@ import org.jetbrains.dokka.DokkaConfiguration import org.jetbrains.dokka.DokkaGenerator import org.jetbrains.dokka.EnvironmentAndFacade import org.jetbrains.dokka.pages.PlatformData +import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.utilities.DokkaLogger internal class DokkaTestGenerator( private val configuration: DokkaConfiguration, private val logger: DokkaLogger, - private val testMethods: TestMethods + private val testMethods: TestMethods, + private val pluginOverrides: List = emptyList() ) { fun generate() = with(testMethods) { @@ -18,7 +20,7 @@ internal class DokkaTestGenerator( val platforms: Map = dokkaGenerator.setUpAnalysis(configuration) analysisSetupStage(platforms) - val context = dokkaGenerator.initializePlugins(configuration, logger, platforms) + val context = dokkaGenerator.initializePlugins(configuration, logger, platforms, pluginOverrides) pluginsSetupStage(context) val modulesFromPlatforms = dokkaGenerator.createDocumentationModels(platforms, context) diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index fa61bf59..b8817918 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -6,6 +6,7 @@ import org.jetbrains.dokka.pages.ModulePageNode import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.dokka.pages.RootPageNode import org.jetbrains.dokka.plugability.DokkaContext +import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.utilities.DokkaConsoleLogger import org.junit.rules.TemporaryFolder import java.io.File @@ -26,6 +27,7 @@ abstract class AbstractCoreTest { protected fun testFromData( configuration: DokkaConfigurationImpl, cleanupOutput: Boolean = true, + pluginOverrides: List = emptyList(), block: TestBuilder.() -> Unit ) { val testMethods = TestBuilder().apply(block).build() @@ -36,13 +38,14 @@ abstract class AbstractCoreTest { configuration.copy( outputDir = tempDir.root.toPath().toAbsolutePath().toString() ) - DokkaTestGenerator(newConfiguration, logger, testMethods).generate() + DokkaTestGenerator(newConfiguration, logger, testMethods, pluginOverrides).generate() } protected fun testInline( query: String, configuration: DokkaConfigurationImpl, cleanupOutput: Boolean = true, + pluginOverrides: List = emptyList(), block: TestBuilder.() -> Unit ) { val testMethods = TestBuilder().apply(block).build() @@ -57,7 +60,7 @@ abstract class AbstractCoreTest { passesConfigurations = configuration.passesConfigurations .map { it.copy(sourceRoots = it.sourceRoots.map { it.copy(path = "${testDirPath.toAbsolutePath()}/${it.path}") }) } ) - DokkaTestGenerator(newConfiguration, logger, testMethods).generate() + DokkaTestGenerator(newConfiguration, logger, testMethods, pluginOverrides).generate() } private fun String.toFileMap(): Map = this.trimMargin().removePrefix("|") -- cgit From 18e28d080792d3f805d8e3c787675712d6b9b7ce Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Wed, 5 Feb 2020 13:54:04 +0100 Subject: Implements tests for MarkdownParser and fixes some bugs related to its --- .../main/kotlin/testApi/testRunner/TestRunner.kt | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index b8817918..f906755a 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -2,12 +2,15 @@ package testApi.testRunner import org.jetbrains.dokka.* import org.jetbrains.dokka.model.Module +import org.jetbrains.dokka.model.Package +import org.jetbrains.dokka.model.doc.DocumentationNode import org.jetbrains.dokka.pages.ModulePageNode import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.dokka.pages.RootPageNode import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.utilities.DokkaConsoleLogger +import org.junit.Assert import org.junit.rules.TemporaryFolder import java.io.File import java.nio.charset.Charset @@ -200,6 +203,48 @@ abstract class AbstractCoreTest { } } +abstract class AbstractKDocTest : AbstractCoreTest() { + + private val configuration = dokkaConfiguration { + passes { + pass { + sourceRoots = listOf("src/main/kotlin/example/Test.kt") + } + } + } + + private fun interpolateKdoc(kdoc: String) = """ + |/src/main/kotlin/example/Test.kt + |package example + | /** + ${kdoc.split("\n").joinToString("") { "| * $it\n" } } + | */ + |class Test + """.trimMargin() + + private fun actualDocumentationNode(modulePageNode: ModulePageNode) = + (modulePageNode.documentable?.children?.first() as Package) + .classlikes.first() + .platformInfo.first() + .documentationNode + + + protected fun executeTest(kdoc: String, expectedDocumentationNode: DocumentationNode) { + testInline( + interpolateKdoc(kdoc), + configuration + ) { + pagesGenerationStage = { + Assert.assertEquals( + expectedDocumentationNode, + actualDocumentationNode(it) + ) + } + } + } +} + + data class TestMethods( val analysisSetupStage: (Map) -> Unit, val pluginsSetupStage: (DokkaContext) -> Unit, -- cgit From 2d9f0753bb925f6a6d08ab7e67d5676c196de7d0 Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Mon, 10 Feb 2020 17:05:11 +0100 Subject: Adds requested changes --- .../main/kotlin/testApi/testRunner/TestRunner.kt | 42 ---------------------- 1 file changed, 42 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index f906755a..edeedf10 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -203,48 +203,6 @@ abstract class AbstractCoreTest { } } -abstract class AbstractKDocTest : AbstractCoreTest() { - - private val configuration = dokkaConfiguration { - passes { - pass { - sourceRoots = listOf("src/main/kotlin/example/Test.kt") - } - } - } - - private fun interpolateKdoc(kdoc: String) = """ - |/src/main/kotlin/example/Test.kt - |package example - | /** - ${kdoc.split("\n").joinToString("") { "| * $it\n" } } - | */ - |class Test - """.trimMargin() - - private fun actualDocumentationNode(modulePageNode: ModulePageNode) = - (modulePageNode.documentable?.children?.first() as Package) - .classlikes.first() - .platformInfo.first() - .documentationNode - - - protected fun executeTest(kdoc: String, expectedDocumentationNode: DocumentationNode) { - testInline( - interpolateKdoc(kdoc), - configuration - ) { - pagesGenerationStage = { - Assert.assertEquals( - expectedDocumentationNode, - actualDocumentationNode(it) - ) - } - } - } -} - - data class TestMethods( val analysisSetupStage: (Map) -> Unit, val pluginsSetupStage: (DokkaContext) -> Unit, -- cgit From e730b82c4db6306a5b9e552d8a4c6578b0c1e01a Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Thu, 13 Feb 2020 12:52:39 +0100 Subject: Update packaging structure, fix testAPI publication, simplify dependencies handling in plugins Fixes #627 This commit removes repackaging `dokka-core` with all its dependencies by creating a publication for those dependencies. Moreover it moves `kotlinx-markdown` dependency to `coreDependencies` as this library is only present in Kotlin Bintray repository. TestAPI now publishes correctly --- testApi/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'testApi') diff --git a/testApi/build.gradle.kts b/testApi/build.gradle.kts index db861b90..43c984b5 100644 --- a/testApi/build.gradle.kts +++ b/testApi/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation(project(":core")) + api(project(":core")) implementation("junit:junit:4.13") // TODO: remove dependency to junit implementation(kotlin("stdlib")) } @@ -20,7 +20,7 @@ publishing { publications { register("dokkaTestAPI") { artifactId = "dokka-test-api" - components["java"] + from(components["java"]) artifact(sourceJar.get()) } } -- cgit From 951768d7203baa33568e9b713053f30bc9153c4e Mon Sep 17 00:00:00 2001 From: Szymon Świstun Date: Mon, 10 Feb 2020 13:07:24 +0100 Subject: added test point after render --- testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt | 1 + testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt index 21bbe72d..33f0aff8 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt @@ -39,5 +39,6 @@ internal class DokkaTestGenerator( pagesTransformationStage(transformedPages) dokkaGenerator.render(transformedPages, context) + renderingStage(transformedPages, context) } } \ No newline at end of file diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index edeedf10..6a5bd303 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -101,6 +101,7 @@ abstract class AbstractCoreTest { var documentablesTransformationStage: (Module) -> Unit = {} var pagesGenerationStage: (ModulePageNode) -> Unit = {} var pagesTransformationStage: (RootPageNode) -> Unit = {} + var renderingStage: (RootPageNode, DokkaContext) -> Unit = { a, b -> } fun build() = TestMethods( analysisSetupStage, @@ -109,7 +110,8 @@ abstract class AbstractCoreTest { documentablesMergingStage, documentablesTransformationStage, pagesGenerationStage, - pagesTransformationStage + pagesTransformationStage, + renderingStage ) } @@ -210,5 +212,6 @@ data class TestMethods( val documentablesMergingStage: (Module) -> Unit, val documentablesTransformationStage: (Module) -> Unit, val pagesGenerationStage: (ModulePageNode) -> Unit, - val pagesTransformationStage: (RootPageNode) -> Unit + val pagesTransformationStage: (RootPageNode) -> Unit, + val renderingStage: (RootPageNode, DokkaContext) -> Unit ) \ No newline at end of file -- cgit From cacf1e0c6cda4e42fe6581946cad53a377c71ec7 Mon Sep 17 00:00:00 2001 From: Szymon Świstun Date: Wed, 26 Feb 2020 11:52:03 +0100 Subject: Port some of the core tests from the previous model --- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 6a5bd303..485567ac 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -2,15 +2,12 @@ package testApi.testRunner import org.jetbrains.dokka.* import org.jetbrains.dokka.model.Module -import org.jetbrains.dokka.model.Package -import org.jetbrains.dokka.model.doc.DocumentationNode import org.jetbrains.dokka.pages.ModulePageNode import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.dokka.pages.RootPageNode import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.utilities.DokkaConsoleLogger -import org.junit.Assert import org.junit.rules.TemporaryFolder import java.io.File import java.nio.charset.Charset @@ -25,7 +22,7 @@ abstract class AbstractCoreTest { protected fun getTestDataDir(name: String) = File("src/test/resources/$name").takeIf { it.exists() }?.toPath() - ?: throw InvalidPathException(name, "Cannot be found") + ?: throw InvalidPathException(name, "Cannot be found") protected fun testFromData( configuration: DokkaConfigurationImpl, @@ -53,7 +50,8 @@ abstract class AbstractCoreTest { ) { val testMethods = TestBuilder().apply(block).build() val testDirPath = getTempDir(cleanupOutput).root.toPath() - val fileMap = query.toFileMap() + val fileMap = query//.replace("""\n\s*\n?""".toRegex(), "\n") + .replace("""\|/[^\w]""".toRegex()) { it.value.replace("|/", "| /") }.toFileMap() fileMap.materializeFiles(testDirPath.toAbsolutePath()) if (!cleanupOutput) logger.info("Output generated under: ${testDirPath.toAbsolutePath()}") -- cgit From ac590359174995a16a116a96dbb9df5dafa042f5 Mon Sep 17 00:00:00 2001 From: Paweł Marks Date: Fri, 28 Feb 2020 16:30:17 +0100 Subject: Test api moved to sensible package --- .../main/kotlin/testApi/testRunner/DokkaTestGenerator.kt | 2 +- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt index 33f0aff8..ddee7083 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt @@ -1,4 +1,4 @@ -package testApi.testRunner +package org.jetbrains.dokka.testApi.testRunner import org.jetbrains.dokka.DokkaConfiguration import org.jetbrains.dokka.DokkaGenerator diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 485567ac..4c754211 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -1,4 +1,4 @@ -package testApi.testRunner +package org.jetbrains.dokka.testApi.testRunner import org.jetbrains.dokka.* import org.jetbrains.dokka.model.Module @@ -38,7 +38,12 @@ abstract class AbstractCoreTest { configuration.copy( outputDir = tempDir.root.toPath().toAbsolutePath().toString() ) - DokkaTestGenerator(newConfiguration, logger, testMethods, pluginOverrides).generate() + DokkaTestGenerator( + newConfiguration, + logger, + testMethods, + pluginOverrides + ).generate() } protected fun testInline( @@ -61,7 +66,12 @@ abstract class AbstractCoreTest { passesConfigurations = configuration.passesConfigurations .map { it.copy(sourceRoots = it.sourceRoots.map { it.copy(path = "${testDirPath.toAbsolutePath()}/${it.path}") }) } ) - DokkaTestGenerator(newConfiguration, logger, testMethods, pluginOverrides).generate() + DokkaTestGenerator( + newConfiguration, + logger, + testMethods, + pluginOverrides + ).generate() } private fun String.toFileMap(): Map = this.trimMargin().removePrefix("|") -- cgit From 1347329aa18203e9657e096447e0e30ae759b137 Mon Sep 17 00:00:00 2001 From: Paweł Marks Date: Mon, 2 Mar 2020 10:34:33 +0100 Subject: Creates MockContext for tests --- .../src/main/kotlin/testApi/context/MockContext.kt | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 testApi/src/main/kotlin/testApi/context/MockContext.kt (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/context/MockContext.kt b/testApi/src/main/kotlin/testApi/context/MockContext.kt new file mode 100644 index 00000000..4f481bce --- /dev/null +++ b/testApi/src/main/kotlin/testApi/context/MockContext.kt @@ -0,0 +1,36 @@ +package org.jetbrains.dokka.testApi.context + +import org.jetbrains.dokka.DokkaConfiguration +import org.jetbrains.dokka.EnvironmentAndFacade +import org.jetbrains.dokka.pages.PlatformData +import org.jetbrains.dokka.plugability.DokkaContext +import org.jetbrains.dokka.plugability.DokkaPlugin +import org.jetbrains.dokka.plugability.ExtensionPoint +import org.jetbrains.dokka.utilities.DokkaConsoleLogger +import kotlin.reflect.KClass + +@Suppress("UNCHECKED_CAST") // It is only usable from tests so we do not care about safety +class MockContext( + vararg extensions: Pair, Any>, + private val testConfiguration: DokkaConfiguration? = null, + private val testPlatforms: Map? = null +) : DokkaContext { + private val extensionMap: Map, List> = + extensions.groupBy(Pair, Any>::first, Pair, Any>::second) + + override fun plugin(kclass: KClass): T? = null.also { + logger.warn("Cannot access plugins from mock context") + } + + override fun > get(point: E): List = extensionMap[point] as List + + override fun > single(point: E): T = get(point).single() + + override val logger = DokkaConsoleLogger + + override val configuration: DokkaConfiguration + get() = testConfiguration ?: throw IllegalStateException("This mock context doesn't provide configuration") + + override val platforms: Map + get() = testPlatforms ?: throw IllegalStateException("This mock context doesn't provide platforms data") +} \ No newline at end of file -- cgit From 973cc5238e2f7ede6d9cf54437785770a3e020c9 Mon Sep 17 00:00:00 2001 From: Paweł Marks Date: Mon, 2 Mar 2020 17:10:16 +0100 Subject: Tests for wrapping groups in renderer. Also util for groups --- .../src/main/kotlin/testApi/context/MockContext.kt | 26 ++++++++++++++++------ 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/context/MockContext.kt b/testApi/src/main/kotlin/testApi/context/MockContext.kt index 4f481bce..758a4311 100644 --- a/testApi/src/main/kotlin/testApi/context/MockContext.kt +++ b/testApi/src/main/kotlin/testApi/context/MockContext.kt @@ -8,23 +8,30 @@ import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.plugability.ExtensionPoint import org.jetbrains.dokka.utilities.DokkaConsoleLogger import kotlin.reflect.KClass +import kotlin.reflect.KMutableProperty +import kotlin.reflect.full.memberProperties @Suppress("UNCHECKED_CAST") // It is only usable from tests so we do not care about safety class MockContext( - vararg extensions: Pair, Any>, + vararg extensions: Pair, (DokkaContext) -> Any>, private val testConfiguration: DokkaConfiguration? = null, private val testPlatforms: Map? = null ) : DokkaContext { - private val extensionMap: Map, List> = - extensions.groupBy(Pair, Any>::first, Pair, Any>::second) - - override fun plugin(kclass: KClass): T? = null.also { - logger.warn("Cannot access plugins from mock context") + private val extensionMap by lazy { + extensions.groupBy(Pair, (DokkaContext) -> Any>::first) { + it.second(this) + } } + private val plugins = mutableMapOf, DokkaPlugin>() + + override fun plugin(kclass: KClass): T? = plugins.getOrPut(kclass) { + kclass.constructors.single { it.parameters.isEmpty() }.call().also { it.injectContext(this) } + } as T + override fun > get(point: E): List = extensionMap[point] as List - override fun > single(point: E): T = get(point).single() + override fun > single(point: E): T = get(point).single() override val logger = DokkaConsoleLogger @@ -33,4 +40,9 @@ class MockContext( override val platforms: Map get() = testPlatforms ?: throw IllegalStateException("This mock context doesn't provide platforms data") +} + +private fun DokkaPlugin.injectContext(context: DokkaContext) { + (DokkaPlugin::class.memberProperties.single { it.name == "context" } as KMutableProperty<*>) + .setter.call(this, context) } \ No newline at end of file -- cgit From bcfd835f3670ab333e5255173cd40206e6cf3fde Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Tue, 3 Mar 2020 19:56:25 +0100 Subject: Use JDK8 as the default version --- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 4c754211..641cc5f9 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -171,7 +171,7 @@ abstract class AbstractCoreTest { var reportUndocumented: Boolean = false, var skipEmptyPackages: Boolean = false, var skipDeprecated: Boolean = false, - var jdkVersion: Int = 6, + var jdkVersion: Int = 8, var languageVersion: String? = null, var apiVersion: String? = null, var noStdlibLink: Boolean = false, -- cgit From 996feefe717ac623daabaadda71b5b9d2bbe1cf1 Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Mon, 16 Mar 2020 14:33:38 +0100 Subject: Rename Documentables to avoid name conflicts --- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 641cc5f9..a0e3b709 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -1,7 +1,7 @@ package org.jetbrains.dokka.testApi.testRunner import org.jetbrains.dokka.* -import org.jetbrains.dokka.model.Module +import org.jetbrains.dokka.model.DModule import org.jetbrains.dokka.pages.ModulePageNode import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.dokka.pages.RootPageNode @@ -104,9 +104,9 @@ abstract class AbstractCoreTest { protected class TestBuilder { var analysisSetupStage: (Map) -> Unit = {} var pluginsSetupStage: (DokkaContext) -> Unit = {} - var documentablesCreationStage: (List) -> Unit = {} - var documentablesMergingStage: (Module) -> Unit = {} - var documentablesTransformationStage: (Module) -> Unit = {} + var documentablesCreationStage: (List) -> Unit = {} + var documentablesMergingStage: (DModule) -> Unit = {} + var documentablesTransformationStage: (DModule) -> Unit = {} var pagesGenerationStage: (ModulePageNode) -> Unit = {} var pagesTransformationStage: (RootPageNode) -> Unit = {} var renderingStage: (RootPageNode, DokkaContext) -> Unit = { a, b -> } @@ -216,9 +216,9 @@ abstract class AbstractCoreTest { data class TestMethods( val analysisSetupStage: (Map) -> Unit, val pluginsSetupStage: (DokkaContext) -> Unit, - val documentablesCreationStage: (List) -> Unit, - val documentablesMergingStage: (Module) -> Unit, - val documentablesTransformationStage: (Module) -> Unit, + val documentablesCreationStage: (List) -> Unit, + val documentablesMergingStage: (DModule) -> Unit, + val documentablesTransformationStage: (DModule) -> Unit, val pagesGenerationStage: (ModulePageNode) -> Unit, val pagesTransformationStage: (RootPageNode) -> Unit, val renderingStage: (RootPageNode, DokkaContext) -> Unit -- cgit From 8658fd40e3674e29ef10e1fc4289d26caea1e762 Mon Sep 17 00:00:00 2001 From: Szymon Świstun Date: Thu, 5 Mar 2020 11:40:22 +0100 Subject: Add warning when unused extension points are found --- testApi/src/main/kotlin/testApi/context/MockContext.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/context/MockContext.kt b/testApi/src/main/kotlin/testApi/context/MockContext.kt index 758a4311..d3def4dc 100644 --- a/testApi/src/main/kotlin/testApi/context/MockContext.kt +++ b/testApi/src/main/kotlin/testApi/context/MockContext.kt @@ -15,7 +15,8 @@ import kotlin.reflect.full.memberProperties class MockContext( vararg extensions: Pair, (DokkaContext) -> Any>, private val testConfiguration: DokkaConfiguration? = null, - private val testPlatforms: Map? = null + private val testPlatforms: Map? = null, + private val unusedExtensionPoints: List>? = null ) : DokkaContext { private val extensionMap by lazy { extensions.groupBy(Pair, (DokkaContext) -> Any>::first) { @@ -40,6 +41,9 @@ class MockContext( override val platforms: Map get() = testPlatforms ?: throw IllegalStateException("This mock context doesn't provide platforms data") + override val unusedPoints: Collection> + get() = unusedExtensionPoints + ?: throw IllegalStateException("This mock context doesn't provide unused extension points") } private fun DokkaPlugin.injectContext(context: DokkaContext) { -- cgit From 4c8f3bcba59f06a9e8eabe6ac7da8ca976504092 Mon Sep 17 00:00:00 2001 From: Paweł Marks Date: Wed, 18 Mar 2020 19:21:08 +0100 Subject: Fix html renderer tests --- testApi/src/main/kotlin/testApi/context/MockContext.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/context/MockContext.kt b/testApi/src/main/kotlin/testApi/context/MockContext.kt index d3def4dc..5236f1f4 100644 --- a/testApi/src/main/kotlin/testApi/context/MockContext.kt +++ b/testApi/src/main/kotlin/testApi/context/MockContext.kt @@ -30,7 +30,7 @@ class MockContext( kclass.constructors.single { it.parameters.isEmpty() }.call().also { it.injectContext(this) } } as T - override fun > get(point: E): List = extensionMap[point] as List + override fun > get(point: E): List = extensionMap[point].orEmpty() as List override fun > single(point: E): T = get(point).single() -- cgit From b9f426a65f7b98a678478222646a23f10425681f Mon Sep 17 00:00:00 2001 From: Błażej Kardyś Date: Thu, 12 Mar 2020 21:42:07 +0100 Subject: Adding documentable filtering based on visibility --- testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt | 7 +++++-- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt index ddee7083..0e77344d 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt @@ -26,10 +26,13 @@ internal class DokkaTestGenerator( val modulesFromPlatforms = dokkaGenerator.createDocumentationModels(platforms, context) documentablesCreationStage(modulesFromPlatforms) - val documentationModel = dokkaGenerator.mergeDocumentationModels(modulesFromPlatforms, context) + val filteredModules = dokkaGenerator.transformDocumentationModelBeforeMerge(modulesFromPlatforms, context) + documentablesFirstTransformationStep(filteredModules) + + val documentationModel = dokkaGenerator.mergeDocumentationModels(filteredModules, context) documentablesMergingStage(documentationModel) - val transformedDocumentation = dokkaGenerator.transformDocumentationModel(documentationModel, context) + val transformedDocumentation = dokkaGenerator.transformDocumentationModelAfterMerge(documentationModel, context) documentablesTransformationStage(transformedDocumentation) val pages = dokkaGenerator.createPages(transformedDocumentation, context) diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index a0e3b709..64d16fef 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -105,6 +105,7 @@ abstract class AbstractCoreTest { var analysisSetupStage: (Map) -> Unit = {} var pluginsSetupStage: (DokkaContext) -> Unit = {} var documentablesCreationStage: (List) -> Unit = {} + var documentablesFirstTransformationStep: (List) -> Unit = {} var documentablesMergingStage: (DModule) -> Unit = {} var documentablesTransformationStage: (DModule) -> Unit = {} var pagesGenerationStage: (ModulePageNode) -> Unit = {} @@ -115,6 +116,7 @@ abstract class AbstractCoreTest { analysisSetupStage, pluginsSetupStage, documentablesCreationStage, + documentablesFirstTransformationStep, documentablesMergingStage, documentablesTransformationStage, pagesGenerationStage, @@ -217,6 +219,7 @@ data class TestMethods( val analysisSetupStage: (Map) -> Unit, val pluginsSetupStage: (DokkaContext) -> Unit, val documentablesCreationStage: (List) -> Unit, + val documentablesFirstTransformationStep: (List) -> Unit, val documentablesMergingStage: (DModule) -> Unit, val documentablesTransformationStage: (DModule) -> Unit, val pagesGenerationStage: (ModulePageNode) -> Unit, -- cgit From c09bde34ff729ef9b1f3bea602fb53cd4e6dca42 Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Fri, 13 Mar 2020 10:46:33 +0100 Subject: Gradle Task supporting multimodular projects --- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 64d16fef..d2db90b7 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -63,8 +63,9 @@ abstract class AbstractCoreTest { val newConfiguration = configuration.copy( outputDir = testDirPath.toAbsolutePath().toString(), - passesConfigurations = configuration.passesConfigurations - .map { it.copy(sourceRoots = it.sourceRoots.map { it.copy(path = "${testDirPath.toAbsolutePath()}/${it.path}") }) } + passesConfigurations = configuration.passesConfigurations.map { + it.copy(sourceRoots = it.sourceRoots.map { it.copy(path = "${testDirPath.toAbsolutePath()}/${it.path}") }) + } ) DokkaTestGenerator( newConfiguration, @@ -139,7 +140,6 @@ abstract class AbstractCoreTest { var cacheRoot: String? = null var pluginsClasspath: List = emptyList() private val passesConfigurations = mutableListOf() - fun build() = DokkaConfigurationImpl( outputDir = outputDir, format = format, -- cgit From 3f8fef0f65fe96fb2a3b1dc2280a16b175fbb6c9 Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Tue, 24 Mar 2020 16:19:51 +0100 Subject: Fix stdlib tests by adding stdlib to the test classpath --- .../src/main/kotlin/testApi/testRunner/TestRunner.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index d2db90b7..26b9a4b6 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -1,5 +1,6 @@ package org.jetbrains.dokka.testApi.testRunner +import com.intellij.openapi.application.PathManager import org.jetbrains.dokka.* import org.jetbrains.dokka.model.DModule import org.jetbrains.dokka.pages.ModulePageNode @@ -213,6 +214,22 @@ abstract class AbstractCoreTest { sourceLinks = sourceLinks ) } + + protected val jvmStdlibPath: String? by lazy { + PathManager.getResourceRoot(Strictfp::class.java, "/kotlin/jvm/Strictfp.class") + } + + protected val jsStdlibPath: String? by lazy { + PathManager.getResourceRoot(Any::class.java, "/kotlin/jquery") + } + + protected val commonStdlibPath: String? by lazy { + // TODO: feels hacky, find a better way to do it + ClassLoader.getSystemResource("kotlin/UInt.kotlin_metadata") + ?.file + ?.replace("file:", "") + ?.replaceAfter(".jar", "") + } } data class TestMethods( -- cgit From 7f9d595f604e269fb918dc69cf2f80c19aef58c2 Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Wed, 1 Apr 2020 17:02:18 +0200 Subject: Adds possibility to configure plugins --- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 26b9a4b6..6c132d3c 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -140,6 +140,7 @@ abstract class AbstractCoreTest { var generateIndexPages: Boolean = true var cacheRoot: String? = null var pluginsClasspath: List = emptyList() + var pluginsConfigurations: Map = emptyMap() private val passesConfigurations = mutableListOf() fun build() = DokkaConfigurationImpl( outputDir = outputDir, @@ -148,7 +149,8 @@ abstract class AbstractCoreTest { cacheRoot = cacheRoot, impliedPlatforms = emptyList(), passesConfigurations = passesConfigurations, - pluginsClasspath = pluginsClasspath + pluginsClasspath = pluginsClasspath, + pluginsConfiguration = pluginsConfigurations ) fun passes(block: Passes.() -> Unit) { -- cgit From 3f2a790190da4f40ea6d8a976aa1929b2a1b002b Mon Sep 17 00:00:00 2001 From: Błażej Kardyś Date: Tue, 5 May 2020 17:45:12 +0200 Subject: Changing approach from platform-driven to source-set-driven --- testApi/src/main/kotlin/testApi/context/MockContext.kt | 12 +++++++----- .../src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt | 11 ++++++++--- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 10 +++++++--- 3 files changed, 22 insertions(+), 11 deletions(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/context/MockContext.kt b/testApi/src/main/kotlin/testApi/context/MockContext.kt index 5236f1f4..11520280 100644 --- a/testApi/src/main/kotlin/testApi/context/MockContext.kt +++ b/testApi/src/main/kotlin/testApi/context/MockContext.kt @@ -2,7 +2,8 @@ package org.jetbrains.dokka.testApi.context import org.jetbrains.dokka.DokkaConfiguration import org.jetbrains.dokka.EnvironmentAndFacade -import org.jetbrains.dokka.pages.PlatformData +import org.jetbrains.dokka.model.SourceSetCache +import org.jetbrains.dokka.model.SourceSetData import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.plugability.ExtensionPoint @@ -15,8 +16,9 @@ import kotlin.reflect.full.memberProperties class MockContext( vararg extensions: Pair, (DokkaContext) -> Any>, private val testConfiguration: DokkaConfiguration? = null, - private val testPlatforms: Map? = null, - private val unusedExtensionPoints: List>? = null + private val testSourceSets: Map? = null, + private val unusedExtensionPoints: List>? = null, + override val sourceSetCache: SourceSetCache ) : DokkaContext { private val extensionMap by lazy { extensions.groupBy(Pair, (DokkaContext) -> Any>::first) { @@ -39,8 +41,8 @@ class MockContext( override val configuration: DokkaConfiguration get() = testConfiguration ?: throw IllegalStateException("This mock context doesn't provide configuration") - override val platforms: Map - get() = testPlatforms ?: throw IllegalStateException("This mock context doesn't provide platforms data") + override val platforms: Map + get() = testSourceSets ?: throw IllegalStateException("This mock context doesn't provide platforms data") override val unusedPoints: Collection> get() = unusedExtensionPoints ?: throw IllegalStateException("This mock context doesn't provide unused extension points") diff --git a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt index 0e77344d..802bfd93 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/DokkaTestGenerator.kt @@ -3,7 +3,8 @@ package org.jetbrains.dokka.testApi.testRunner import org.jetbrains.dokka.DokkaConfiguration import org.jetbrains.dokka.DokkaGenerator import org.jetbrains.dokka.EnvironmentAndFacade -import org.jetbrains.dokka.pages.PlatformData +import org.jetbrains.dokka.model.SourceSetCache +import org.jetbrains.dokka.model.SourceSetData import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.utilities.DokkaLogger @@ -16,11 +17,15 @@ internal class DokkaTestGenerator( fun generate() = with(testMethods) { val dokkaGenerator = DokkaGenerator(configuration, logger) + val sourceSetsCache = SourceSetCache() - val platforms: Map = dokkaGenerator.setUpAnalysis(configuration) + val platforms: Map = dokkaGenerator.setUpAnalysis( + configuration, + sourceSetsCache + ) analysisSetupStage(platforms) - val context = dokkaGenerator.initializePlugins(configuration, logger, platforms, pluginOverrides) + val context = dokkaGenerator.initializePlugins(configuration, logger, platforms, sourceSetsCache, pluginOverrides) pluginsSetupStage(context) val modulesFromPlatforms = dokkaGenerator.createDocumentationModels(platforms, context) diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 6c132d3c..43d99dad 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -3,8 +3,8 @@ package org.jetbrains.dokka.testApi.testRunner import com.intellij.openapi.application.PathManager import org.jetbrains.dokka.* import org.jetbrains.dokka.model.DModule +import org.jetbrains.dokka.model.SourceSetData import org.jetbrains.dokka.pages.ModulePageNode -import org.jetbrains.dokka.pages.PlatformData import org.jetbrains.dokka.pages.RootPageNode import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.DokkaPlugin @@ -104,7 +104,7 @@ abstract class AbstractCoreTest { } protected class TestBuilder { - var analysisSetupStage: (Map) -> Unit = {} + var analysisSetupStage: (Map) -> Unit = {} var pluginsSetupStage: (DokkaContext) -> Unit = {} var documentablesCreationStage: (List) -> Unit = {} var documentablesFirstTransformationStep: (List) -> Unit = {} @@ -167,8 +167,10 @@ abstract class AbstractCoreTest { @DokkaConfigurationDsl protected class DokkaPassConfigurationBuilder( var moduleName: String = "root", + var sourceSetName: String = "main", var classpath: List = emptyList(), var sourceRoots: List = emptyList(), + var dependentSourceRoots: List = emptyList(), var samples: List = emptyList(), var includes: List = emptyList(), var includeNonPublic: Boolean = true, @@ -192,8 +194,10 @@ abstract class AbstractCoreTest { ) { fun build() = PassConfigurationImpl( moduleName = moduleName, + sourceSetName = sourceSetName, classpath = classpath, sourceRoots = sourceRoots.map { SourceRootImpl(it) }, + dependentSourceRoots = dependentSourceRoots.map { SourceRootImpl(it) }, samples = samples, includes = includes, includeNonPublic = includeNonPublic, @@ -235,7 +239,7 @@ abstract class AbstractCoreTest { } data class TestMethods( - val analysisSetupStage: (Map) -> Unit, + val analysisSetupStage: (Map) -> Unit, val pluginsSetupStage: (DokkaContext) -> Unit, val documentablesCreationStage: (List) -> Unit, val documentablesFirstTransformationStep: (List) -> Unit, -- cgit From 6b85bb2ec2764a2c8b14717ef8e013a0f3c6e99f Mon Sep 17 00:00:00 2001 From: Błażej Kardyś Date: Tue, 19 May 2020 19:02:58 +0200 Subject: Merging of platform dependent hints in sourceset tree --- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 2 ++ 1 file changed, 2 insertions(+) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 43d99dad..6c323ea2 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -171,6 +171,7 @@ abstract class AbstractCoreTest { var classpath: List = emptyList(), var sourceRoots: List = emptyList(), var dependentSourceRoots: List = emptyList(), + var dependentSourceSets: List = emptyList(), var samples: List = emptyList(), var includes: List = emptyList(), var includeNonPublic: Boolean = true, @@ -198,6 +199,7 @@ abstract class AbstractCoreTest { classpath = classpath, sourceRoots = sourceRoots.map { SourceRootImpl(it) }, dependentSourceRoots = dependentSourceRoots.map { SourceRootImpl(it) }, + dependentSourceSets = dependentSourceSets, samples = samples, includes = includes, includeNonPublic = includeNonPublic, -- cgit From 6dc9498ca849645ecb4ec923bb7116b245dca706 Mon Sep 17 00:00:00 2001 From: Błażej Kardyś Date: Wed, 27 May 2020 01:16:48 +0200 Subject: All modules page generation --- testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt index 6c323ea2..187f718b 100644 --- a/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/testApi/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -150,7 +150,8 @@ abstract class AbstractCoreTest { impliedPlatforms = emptyList(), passesConfigurations = passesConfigurations, pluginsClasspath = pluginsClasspath, - pluginsConfiguration = pluginsConfigurations + pluginsConfiguration = pluginsConfigurations, + modules = emptyList() ) fun passes(block: Passes.() -> Unit) { -- cgit From e9fd8b7bc00491b50e4822acc82e5615ab0bde3b Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Fri, 5 Jun 2020 09:07:20 +0200 Subject: Implement `reportUndocumented` option to report undocumented code --- .../src/main/kotlin/testApi/logger/TestLogger.kt | 53 ++++++++++++++++++++++ .../main/kotlin/testApi/testRunner/TestRunner.kt | 6 ++- 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 testApi/src/main/kotlin/testApi/logger/TestLogger.kt (limited to 'testApi') diff --git a/testApi/src/main/kotlin/testApi/logger/TestLogger.kt b/testApi/src/main/kotlin/testApi/logger/TestLogger.kt new file mode 100644 index 00000000..8f88f88b --- /dev/null +++ b/testApi/src/main/kotlin/testApi/logger/TestLogger.kt @@ -0,0 +1,53 @@ +package testApi.logger + +import org.jetbrains.dokka.utilities.DokkaLogger + +class TestLogger(private val logger: DokkaLogger) : DokkaLogger { + override var warningsCount: Int by logger::warningsCount + override var errorsCount: Int by logger::errorsCount + + private var _debugMessages = mutableListOf() + val debugMessages: List get() = _debugMessages.toList() + + private var _infoMessages = mutableListOf() + val infoMessages: List get() = _infoMessages.toList() + + private var _progressMessages = mutableListOf() + val progressMessages: List get() = _progressMessages.toList() + + private var _warnMessages = mutableListOf() + val warnMessages: List get() = _warnMessages.toList() + + private var _errorMessages = mutableListOf() + val errorMessages: List get() = _errorMessages.toList() + + override fun debug(message: String) { + _debugMessages.add(message) + logger.debug(message) + } + + overrid