diff options
-rw-r--r-- | core/src/main/kotlin/configuration.kt | 17 | ||||
-rw-r--r-- | runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt | 9 | ||||
-rw-r--r-- | runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt (renamed from runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaConfigurationJsonTest.kt) | 5 | ||||
-rw-r--r-- | runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt | 68 |
4 files changed, 83 insertions, 16 deletions
diff --git a/core/src/main/kotlin/configuration.kt b/core/src/main/kotlin/configuration.kt index 08a3f07a..7e4a3d94 100644 --- a/core/src/main/kotlin/configuration.kt +++ b/core/src/main/kotlin/configuration.kt @@ -5,6 +5,7 @@ package org.jetbrains.dokka import org.jetbrains.dokka.utilities.toJsonString import org.jetbrains.dokka.utilities.parseJson import java.io.File +import java.io.Serializable import java.net.URL object DokkaDefaults { @@ -53,7 +54,7 @@ enum class Platform(val key: String) { data class DokkaSourceSetID( val moduleName: String, val sourceSetName: String -) { +) : Serializable { override fun toString(): String { return "$moduleName/$sourceSetName" } @@ -67,7 +68,7 @@ fun DokkaConfiguration.toJsonString(): String { return toJsonString(this) } -interface DokkaConfiguration { +interface DokkaConfiguration : Serializable { val outputDir: String val cacheRoot: String? val offlineMode: Boolean @@ -77,7 +78,7 @@ interface DokkaConfiguration { val pluginsClasspath: List<File> val pluginsConfiguration: Map<String, String> - interface DokkaSourceSet { + interface DokkaSourceSet: Serializable { val sourceSetID: DokkaSourceSetID val displayName: String val moduleDisplayName: String @@ -103,23 +104,23 @@ interface DokkaConfiguration { val analysisPlatform: Platform } - interface SourceRoot { + interface SourceRoot: Serializable { val path: String } - interface SourceLinkDefinition { + interface SourceLinkDefinition: Serializable { val path: String val url: String val lineSuffix: String? } - interface DokkaModuleDescription { + interface DokkaModuleDescription : Serializable { val name: String val path: String val docFile: String } - interface PackageOptions { + interface PackageOptions : Serializable{ val prefix: String val includeNonPublic: Boolean val reportUndocumented: Boolean? @@ -127,7 +128,7 @@ interface DokkaConfiguration { val suppress: Boolean } - interface ExternalDocumentationLink { + interface ExternalDocumentationLink : Serializable { val url: URL val packageListUrl: URL diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt index 84f35cb4..bed73d6d 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/configurationImplementations.kt @@ -17,7 +17,6 @@ import org.jetbrains.dokka.DokkaDefaults import org.jetbrains.dokka.DokkaSourceSetID import org.jetbrains.dokka.Platform import java.io.File -import java.io.Serializable import java.net.URL import java.util.concurrent.Callable import kotlin.reflect.KMutableProperty @@ -25,7 +24,7 @@ import kotlin.reflect.full.memberProperties import org.gradle.api.tasks.SourceSet as GradleSourceSet import org.jetbrains.kotlin.gradle.model.SourceSet as KotlinSourceSet -class GradleSourceRootImpl : SourceRoot, Serializable { +class GradleSourceRootImpl : SourceRoot { override var path: String = "" set(value) { field = File(value).absolutePath @@ -208,13 +207,13 @@ fun GradleDokkaSourceSet.dependsOn(sourceSet: AndroidSourceSet) { dependsOn(DokkaSourceSetID(sourceSet.name)) } -class GradleSourceLinkDefinitionImpl : SourceLinkDefinition, Serializable { +class GradleSourceLinkDefinitionImpl : SourceLinkDefinition { override var path: String = "" override var url: String = "" override var lineSuffix: String? = null } -class GradleExternalDocumentationLinkImpl : ExternalDocumentationLink, Serializable { +class GradleExternalDocumentationLinkImpl : ExternalDocumentationLink { override var url: URL = URL("http://") override var packageListUrl: URL = URL("http://") } @@ -236,7 +235,7 @@ class GradleDokkaConfigurationImpl : DokkaConfiguration { override var modules: List<GradleDokkaModuleDescription> = emptyList() } -class GradlePackageOptionsImpl : PackageOptions, Serializable { +class GradlePackageOptionsImpl : PackageOptions { override var prefix: String = "" override var includeNonPublic: Boolean = DokkaDefaults.includeNonPublic override var reportUndocumented: Boolean = DokkaDefaults.reportUndocumented 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/DokkaConfigurationJsonTest.kt index b6cf2119..d80f43e4 100644 --- a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaConfigurationJsonTest.kt +++ b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt @@ -1,6 +1,5 @@ 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.* @@ -8,7 +7,7 @@ import java.net.URL import kotlin.test.Test import kotlin.test.assertEquals -class GradleDokkaConfigurationJsonTest { +class DokkaConfigurationJsonTest { @Test fun `DokkaTask configuration toJsonString then parseJson`() { @@ -35,7 +34,7 @@ class GradleDokkaConfigurationJsonTest { link.url = URL("http://some.other.url") } sourceSet.collectKotlinTasks = { - println(this@GradleDokkaConfigurationJsonTest) + println(this@DokkaConfigurationJsonTest) println("This lambda is capturing the entire test") emptyList() } 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<DokkaTask>().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()) + } +} |