From fbed0982653cd20019fe3d56c6b4e5d7e7a72aad Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Mon, 20 Jul 2020 10:38:22 +0200 Subject: Implement DokkaConfigurationSerializableTest --- .../dokka/gradle/DokkaConfigurationJsonTest.kt | 93 +++++++++++++++++++++ .../gradle/DokkaConfigurationSerializableTest.kt | 68 ++++++++++++++++ .../gradle/GradleDokkaConfigurationJsonTest.kt | 94 ---------------------- 3 files changed, 161 insertions(+), 94 deletions(-) create mode 100644 runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt create mode 100644 runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt delete mode 100644 runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaConfigurationJsonTest.kt (limited to 'runners/gradle-plugin/src/test/kotlin') diff --git a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt new file mode 100644 index 00000000..d80f43e4 --- /dev/null +++ b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt @@ -0,0 +1,93 @@ +package org.jetbrains.dokka.gradle + +import org.gradle.kotlin.dsl.withType +import org.gradle.testfixtures.ProjectBuilder +import org.jetbrains.dokka.* +import java.net.URL +import kotlin.test.Test +import kotlin.test.assertEquals + +class DokkaConfigurationJsonTest { + + @Test + fun `DokkaTask configuration toJsonString then parseJson`() { + val project = ProjectBuilder.builder().build() + project.plugins.apply("org.jetbrains.dokka") + val dokkaTask = project.tasks.withType().first() + dokkaTask.plugins.withDependencies { dependencies -> + dependencies.clear() + } + dokkaTask.apply { + this.failOnWarning = true + this.offlineMode = true + this.outputDirectory = "customOutputDir" + this.cacheRoot = "customCacheRoot" + this.pluginsConfiguration["0"] = "a" + this.pluginsConfiguration["1"] = "b" + this.dokkaSourceSets.create("main") { sourceSet -> + sourceSet.moduleDisplayName = "moduleDisplayName" + sourceSet.displayName = "customSourceSetDisplayName" + sourceSet.reportUndocumented = true + + sourceSet.externalDocumentationLink { link -> + link.packageListUrl = URL("http://some.url") + link.url = URL("http://some.other.url") + } + sourceSet.collectKotlinTasks = { + println(this@DokkaConfigurationJsonTest) + println("This lambda is capturing the entire test") + emptyList() + } + + sourceSet.perPackageOption { packageOption -> + packageOption.includeNonPublic = true + packageOption.reportUndocumented = true + packageOption.skipDeprecated = true + } + } + } + + val sourceConfiguration = dokkaTask.getConfigurationOrThrow() + val configurationJson = sourceConfiguration.toJsonString() + val parsedConfiguration = DokkaConfigurationImpl(configurationJson) + + assertEquals( + DokkaConfigurationImpl( + failOnWarning = sourceConfiguration.failOnWarning, + offlineMode = sourceConfiguration.offlineMode, + outputDir = sourceConfiguration.outputDir, + cacheRoot = sourceConfiguration.cacheRoot, + pluginsClasspath = emptyList(), + pluginsConfiguration = sourceConfiguration.pluginsConfiguration.toMap(), + sourceSets = listOf( + DokkaSourceSetImpl( + moduleDisplayName = sourceConfiguration.sourceSets.single().moduleDisplayName, + displayName = sourceConfiguration.sourceSets.single().displayName, + reportUndocumented = sourceConfiguration.sourceSets.single().reportUndocumented, + externalDocumentationLinks = sourceConfiguration.sourceSets.single().externalDocumentationLinks + .map { link -> + ExternalDocumentationLinkImpl( + url = link.url, + packageListUrl = link.packageListUrl + ) + }, + perPackageOptions = sourceConfiguration.sourceSets.single().perPackageOptions.map { option -> + PackageOptionsImpl( + prefix = option.prefix, + includeNonPublic = option.includeNonPublic, + reportUndocumented = option.reportUndocumented, + skipDeprecated = option.skipDeprecated, + suppress = option.suppress + ) + }, + sourceSetID = sourceConfiguration.sourceSets.single().sourceSetID, + sourceRoots = sourceConfiguration.sourceSets.single().sourceRoots.map { sourceRoot -> + SourceRootImpl(sourceRoot.path) + } + ) + ) + ), parsedConfiguration + ) + println(parsedConfiguration) + } +} diff --git a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt new file mode 100644 index 00000000..70ecfcf0 --- /dev/null +++ b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt @@ -0,0 +1,68 @@ +package org.jetbrains.dokka.gradle + +import org.gradle.kotlin.dsl.withType +import org.gradle.testfixtures.ProjectBuilder +import org.jetbrains.dokka.DokkaConfiguration +import org.jetbrains.dokka.toJsonString +import org.junit.Rule +import org.junit.rules.TemporaryFolder +import java.io.ObjectInputStream +import java.io.ObjectOutputStream +import java.net.URL +import kotlin.test.Test +import kotlin.test.assertEquals + +class DokkaConfigurationSerializableTest { + + @get:Rule + val temporaryFolder = TemporaryFolder() + + @Test + fun `DokkaTask configuration write to file then parse`() { + val project = ProjectBuilder.builder().build() + project.plugins.apply("org.jetbrains.dokka") + val dokkaTask = project.tasks.withType().first() + dokkaTask.plugins.withDependencies { dependencies -> + dependencies.clear() + } + dokkaTask.apply { + this.failOnWarning = true + this.offlineMode = true + this.outputDirectory = "customOutputDir" + this.cacheRoot = "customCacheRoot" + this.pluginsConfiguration["0"] = "a" + this.pluginsConfiguration["1"] = "b" + this.dokkaSourceSets.create("main") { sourceSet -> + sourceSet.moduleDisplayName = "moduleDisplayName" + sourceSet.displayName = "customSourceSetDisplayName" + sourceSet.reportUndocumented = true + + sourceSet.externalDocumentationLink { link -> + link.packageListUrl = URL("http://some.url") + link.url = URL("http://some.other.url") + } + sourceSet.collectKotlinTasks = { + emptyList() + } + + sourceSet.perPackageOption { packageOption -> + packageOption.includeNonPublic = true + packageOption.reportUndocumented = true + packageOption.skipDeprecated = true + } + } + } + + val sourceConfiguration = dokkaTask.getConfigurationOrThrow() + val configurationFile = temporaryFolder.root.resolve("config.bin") + ObjectOutputStream(configurationFile.outputStream()).use { stream -> + stream.writeObject(sourceConfiguration) + } + val parsedConfiguration = ObjectInputStream(configurationFile.inputStream()).use { stream -> + stream.readObject() as DokkaConfiguration + } + + /* Abusing toJsonString, since there is no proper .equals on the gradle implementations yet */ + assertEquals(sourceConfiguration.toJsonString(), parsedConfiguration.toJsonString()) + } +} diff --git a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaConfigurationJsonTest.kt b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaConfigurationJsonTest.kt deleted file mode 100644 index b6cf2119..00000000 --- a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaConfigurationJsonTest.kt +++ /dev/null @@ -1,94 +0,0 @@ -package org.jetbrains.dokka.gradle - -import org.gradle.api.artifacts.FileCollectionDependency -import org.gradle.kotlin.dsl.withType -import org.gradle.testfixtures.ProjectBuilder -import org.jetbrains.dokka.* -import java.net.URL -import kotlin.test.Test -import kotlin.test.assertEquals - -class GradleDokkaConfigurationJsonTest { - - @Test - fun `DokkaTask configuration toJsonString then parseJson`() { - val project = ProjectBuilder.builder().build() - project.plugins.apply("org.jetbrains.dokka") - val dokkaTask = project.tasks.withType().first() - dokkaTask.plugins.withDependencies { dependencies -> - dependencies.clear() - } - dokkaTask.apply { - this.failOnWarning = true - this.offlineMode = true - this.outputDirectory = "customOutputDir" - this.cacheRoot = "customCacheRoot" - this.pluginsConfiguration["0"] = "a" - this.pluginsConfiguration["1"] = "b" - this.dokkaSourceSets.create("main") { sourceSet -> - sourceSet.moduleDisplayName = "moduleDisplayName" - sourceSet.displayName = "customSourceSetDisplayName" - sourceSet.reportUndocumented = true - - sourceSet.externalDocumentationLink { link -> - link.packageListUrl = URL("http://some.url") - link.url = URL("http://some.other.url") - } - sourceSet.collectKotlinTasks = { - println(this@GradleDokkaConfigurationJsonTest) - println("This lambda is capturing the entire test") - emptyList() - } - - sourceSet.perPackageOption { packageOption -> - packageOption.includeNonPublic = true - packageOption.reportUndocumented = true - packageOption.skipDeprecated = true - } - } - } - - val sourceConfiguration = dokkaTask.getConfigurationOrThrow() - val configurationJson = sourceConfiguration.toJsonString() - val parsedConfiguration = DokkaConfigurationImpl(configurationJson) - - assertEquals( - DokkaConfigurationImpl( - failOnWarning = sourceConfiguration.failOnWarning, - offlineMode = sourceConfiguration.offlineMode, - outputDir = sourceConfiguration.outputDir, - cacheRoot = sourceConfiguration.cacheRoot, - pluginsClasspath = emptyList(), - pluginsConfiguration = sourceConfiguration.pluginsConfiguration.toMap(), - sourceSets = listOf( - DokkaSourceSetImpl( - moduleDisplayName = sourceConfiguration.sourceSets.single().moduleDisplayName, - displayName = sourceConfiguration.sourceSets.single().displayName, - reportUndocumented = sourceConfiguration.sourceSets.single().reportUndocumented, - externalDocumentationLinks = sourceConfiguration.sourceSets.single().externalDocumentationLinks - .map { link -> - ExternalDocumentationLinkImpl( - url = link.url, - packageListUrl = link.packageListUrl - ) - }, - perPackageOptions = sourceConfiguration.sourceSets.single().perPackageOptions.map { option -> - PackageOptionsImpl( - prefix = option.prefix, - includeNonPublic = option.includeNonPublic, - reportUndocumented = option.reportUndocumented, - skipDeprecated = option.skipDeprecated, - suppress = option.suppress - ) - }, - sourceSetID = sourceConfiguration.sourceSets.single().sourceSetID, - sourceRoots = sourceConfiguration.sourceSets.single().sourceRoots.map { sourceRoot -> - SourceRootImpl(sourceRoot.path) - } - ) - ) - ), parsedConfiguration - ) - println(parsedConfiguration) - } -} -- cgit