aboutsummaryrefslogtreecommitdiff
path: root/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka
diff options
context:
space:
mode:
authorPaweł Marks <pmarks@virtuslab.com>2020-07-17 16:36:09 +0200
committerPaweł Marks <pmarks@virtuslab.com>2020-07-17 16:36:09 +0200
commit6996b1135f61c7d2cb60b0652c6a2691dda31990 (patch)
treed568096c25e31c28d14d518a63458b5a7526b896 /runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka
parentde56cab76f556e5b4af0b8c8cb08d8b482b86d0a (diff)
parent1c3530dcbb50c347f80bef694829dbefe89eca77 (diff)
downloaddokka-6996b1135f61c7d2cb60b0652c6a2691dda31990.tar.gz
dokka-6996b1135f61c7d2cb60b0652c6a2691dda31990.tar.bz2
dokka-6996b1135f61c7d2cb60b0652c6a2691dda31990.zip
Merge branch 'dev-0.11.0'
Diffstat (limited to 'runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka')
-rw-r--r--runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/AutomagicProxyTest.kt48
-rw-r--r--runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaTasksTest.kt65
-rw-r--r--runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/KotlinDslDokkaTaskConfigurationTest.kt97
3 files changed, 210 insertions, 0 deletions
diff --git a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/AutomagicProxyTest.kt b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/AutomagicProxyTest.kt
new file mode 100644
index 00000000..e981d6fe
--- /dev/null
+++ b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/AutomagicProxyTest.kt
@@ -0,0 +1,48 @@
+package org.jetbrains.dokka.gradle
+
+import org.jetbrains.dokka.DokkaBootstrap
+import org.jetbrains.dokka.gradle.AutomagicProxyTest.TestInterface
+import java.util.function.BiConsumer
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+
+
+class AutomagicProxyTest {
+
+ private class TestException(message: String, cause: Throwable?) : Exception(message, cause)
+
+ private fun interface TestInterface {
+ @Throws(Throwable::class)
+ operator fun invoke(): Int
+ }
+
+ @Test
+ fun `simple method invocation`() {
+ val instance = TestInterface { 0 }
+ val proxy = automagicTypedProxy<TestInterface>(instance.javaClass.classLoader, instance)
+ assertEquals(0, proxy())
+ }
+
+ @Test
+ fun `exception throw in DokkaBootstrap is not wrapped inside UndeclaredThrowableException`() {
+ val instanceThrowingTestException = object : DokkaBootstrap {
+ override fun configure(serializedConfigurationJSON: String, logger: BiConsumer<String, String>) = Unit
+ override fun generate() {
+ throw TestException("Test Exception Message", Exception("Cause Exception Message"))
+ }
+ }
+
+ val proxy = automagicTypedProxy<DokkaBootstrap>(
+ instanceThrowingTestException.javaClass.classLoader,
+ instanceThrowingTestException
+ )
+
+ val exception = assertFailsWith<TestException> {
+ proxy.generate()
+ }
+
+ assertEquals("Test Exception Message", exception.message)
+ assertEquals("Cause Exception Message", exception.cause?.message)
+ }
+}
diff --git a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaTasksTest.kt b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaTasksTest.kt
new file mode 100644
index 00000000..b948c540
--- /dev/null
+++ b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaTasksTest.kt
@@ -0,0 +1,65 @@
+package org.jetbrains.dokka.gradle
+
+import org.gradle.api.plugins.JavaBasePlugin
+import org.gradle.kotlin.dsl.withType
+import org.gradle.testfixtures.ProjectBuilder
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertSame
+import kotlin.test.assertTrue
+
+class DokkaTasksTest {
+
+ @Test
+ fun `one task per format is registered`() {
+ val project = ProjectBuilder.builder().build()
+ project.plugins.apply("org.jetbrains.dokka")
+
+ assertTrue(
+ project.tasks.findByName("dokkaHtml") is DokkaTask,
+ "Expected DokkaTask: dokkaHtml"
+ )
+
+ assertTrue(
+ project.tasks.findByName("dokkaGfm") is DokkaTask,
+ "Expected DokkaTask: dokkaGfm"
+ )
+
+ assertTrue(
+ project.tasks.findByName("dokkaJekyll") is DokkaTask,
+ "Expected DokkaTask: dokkaJekyll"
+ )
+
+ assertTrue(
+ project.tasks.findByName("dokkaJavadoc") is DokkaTask,
+ "Expected DokkaTask: dokkaJavadoc"
+ )
+ }
+
+ @Test
+ fun `dokka plugin configurations extend dokkaPlugin`() {
+ val project = ProjectBuilder.builder().build()
+ project.plugins.apply("org.jetbrains.dokka")
+
+ val dokkaPluginsConfiguration = project.maybeCreateDokkaDefaultPluginConfiguration()
+
+ project.tasks.withType<DokkaTask>().forEach { dokkaTask ->
+ assertSame(
+ dokkaTask.plugins.extendsFrom.single(), dokkaPluginsConfiguration,
+ "Expected dokka plugins configuration to extend default ${dokkaPluginsConfiguration.name} configuration"
+ )
+ }
+ }
+
+ @Test
+ fun `all dokka tasks are part of the documentation group`() {
+ val project = ProjectBuilder.builder().build()
+ project.plugins.apply("org.jetbrains.dokka")
+ project.tasks.filter { "dokka" in it.name.toLowerCase() }.forEach { dokkaTask ->
+ assertEquals(
+ JavaBasePlugin.DOCUMENTATION_GROUP, dokkaTask.group,
+ "Expected task: ${dokkaTask.path} group to be ${JavaBasePlugin.DOCUMENTATION_GROUP}"
+ )
+ }
+ }
+}
diff --git a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/KotlinDslDokkaTaskConfigurationTest.kt b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/KotlinDslDokkaTaskConfigurationTest.kt
new file mode 100644
index 00000000..7b78fb55
--- /dev/null
+++ b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/KotlinDslDokkaTaskConfigurationTest.kt
@@ -0,0 +1,97 @@
+package org.jetbrains.dokka.gradle
+
+import org.gradle.testfixtures.ProjectBuilder
+import org.jetbrains.dokka.DokkaSourceSetID
+import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class KotlinDslDokkaTaskConfigurationTest {
+
+ @Test
+ fun `configure project using dokka extension function`() {
+ val project = ProjectBuilder.builder().build()
+ project.plugins.apply("org.jetbrains.dokka")
+ project.tasks.withType(DokkaTask::class.java).forEach { dokkaTask ->
+ dokkaTask.outputDirectory = "test"
+ }
+
+ project.tasks.withType(DokkaTask::class.java).forEach { dokkaTask ->
+ assertEquals("test", dokkaTask.outputDirectory)
+ }
+ }
+
+ @Test
+ fun `sourceSet dependsOn by String`() {
+ val project = ProjectBuilder.builder().build()
+ project.plugins.apply("org.jetbrains.dokka")
+
+ project.tasks.withType(DokkaTask::class.java).forEach { dokkaTask ->
+ dokkaTask.dokkaSourceSets.run {
+ val commonMain = create("commonMain")
+ val jvmMain = create("jvmMain") {
+ it.dependsOn("commonMain")
+ }
+
+ assertEquals(
+ 0, commonMain.dependentSourceSets.size,
+ "Expected no dependent source set in commonMain"
+ )
+
+ assertEquals(
+ 1, jvmMain.dependentSourceSets.size,
+ "Expected only one dependent source set in jvmMain"
+ )
+
+ assertEquals(
+ commonMain.sourceSetID, jvmMain.dependentSourceSets.single(),
+ "Expected jvmMain to depend on commonMain"
+ )
+
+ assertEquals(
+ DokkaSourceSetID(project.path, "commonMain"), commonMain.sourceSetID
+ )
+ }
+ }
+ }
+
+ @Test
+ fun `sourceSet dependsOn by DokkaSourceSet`() {
+ val project = ProjectBuilder.builder().build()
+ project.plugins.apply("org.jetbrains.dokka")
+
+ project.tasks.withType(DokkaTask::class.java).first().run {
+ dokkaSourceSets.run {
+ val commonMain = create("commonMain")
+ val jvmMain = create("jvmMain") {
+ it.dependsOn(commonMain)
+ }
+
+ assertEquals(
+ commonMain.sourceSetID, jvmMain.dependentSourceSets.single()
+ )
+ }
+ }
+ }
+
+ @Test
+ fun `sourceSet dependsOn by KotlinSourceSet`() {
+ val project = ProjectBuilder.builder().build()
+ project.plugins.apply("org.jetbrains.dokka")
+ project.plugins.apply("org.jetbrains.kotlin.jvm")
+
+ val kotlin = project.extensions.getByName("kotlin") as KotlinJvmProjectExtension
+
+ project.tasks.withType(DokkaTask::class.java).first().run {
+ dokkaSourceSets.run {
+ val special = create("special") {
+ it.dependsOn(kotlin.sourceSets.getByName("main"))
+ }
+
+ assertEquals(
+ DokkaSourceSetID(project, "main"), special.dependentSourceSets.single()
+ )
+ }
+ }
+ }
+}