From ed6c67bd55ad0211b9be40dda3027340eecd5919 Mon Sep 17 00:00:00 2001 From: RĂ³bert Papp Date: Wed, 1 Feb 2023 12:35:09 +0000 Subject: Add missing group and description for Multimodule tasks (#2806) * Change warning level as requested https://github.com/Kotlin/dokka/pull/2806#pullrequestreview-1278096135 * Change the group of deprecated tasks to "deprecated" according to conversation https://github.com/Kotlin/dokka/pull/2806/files#r1093042654 * Use lazy resolution of tasks and explicit test for deprecation. --- .../jetbrains/dokka/gradle/DokkaPluginApplyTest.kt | 77 ++++++++++++++++++---- 1 file changed, 65 insertions(+), 12 deletions(-) (limited to 'runners/gradle-plugin/src/test/kotlin') diff --git a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaPluginApplyTest.kt b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaPluginApplyTest.kt index 0000cc78..70f6627a 100644 --- a/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaPluginApplyTest.kt +++ b/runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaPluginApplyTest.kt @@ -1,6 +1,7 @@ package org.jetbrains.dokka.gradle import org.gradle.api.plugins.JavaBasePlugin +import org.gradle.api.tasks.TaskContainer import org.gradle.kotlin.dsl.withType import org.gradle.testfixtures.ProjectBuilder import kotlin.test.Test @@ -55,24 +56,44 @@ class DokkaPluginApplyTest { 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}" - ) - } + assertDokkaTasksHaveDocumentationGroup(project.tasks) + } + + @Test + fun `all dokka tasks are part of the documentation group in a multi module setup`() { + val root = ProjectBuilder.builder().withName("root").build() + val child = ProjectBuilder.builder().withName("child").withParent(root).build() + root.plugins.apply("org.jetbrains.dokka") + child.plugins.apply("org.jetbrains.dokka") + assertDokkaTasksHaveDocumentationGroup(root.tasks) + assertDokkaTasksHaveDocumentationGroup(child.tasks) + } + + @Test + fun `old dokka tasks are part of the deprecated group in a multi module setup`() { + val root = ProjectBuilder.builder().withName("root").build() + val child = ProjectBuilder.builder().withName("child").withParent(root).build() + root.plugins.apply("org.jetbrains.dokka") + child.plugins.apply("org.jetbrains.dokka") + assertOldDokkaTasksHaveDeprecatedGroup(root.tasks) + assertOldDokkaTasksHaveDeprecatedGroup(child.tasks) } @Test fun `all dokka tasks provide a task description`() { val project = ProjectBuilder.builder().build() project.plugins.apply("org.jetbrains.dokka") - project.tasks.filter { "dokka" in it.name.toLowerCase() }.forEach { dokkaTask -> - assertTrue( - dokkaTask.description.orEmpty().isNotEmpty(), - "Expected description for task ${dokkaTask.name}" - ) - } + assertDokkaTasksHaveDescription(project.tasks) + } + + @Test + fun `all dokka tasks provide a task description in a multi module setup`() { + val root = ProjectBuilder.builder().withName("root").build() + val child = ProjectBuilder.builder().withName("child").withParent(root).build() + root.plugins.apply("org.jetbrains.dokka") + child.plugins.apply("org.jetbrains.dokka") + assertDokkaTasksHaveDescription(root.tasks) + assertDokkaTasksHaveDescription(child.tasks) } @Test @@ -94,3 +115,35 @@ class DokkaPluginApplyTest { } } } + +private fun assertDokkaTasksHaveDocumentationGroup(taskContainer: TaskContainer) { + taskContainer.withType().forEach { dokkaTask -> + assertEquals( + JavaBasePlugin.DOCUMENTATION_GROUP, + dokkaTask.group, + "Expected task: ${dokkaTask.path} group to be \"${JavaBasePlugin.DOCUMENTATION_GROUP}\"" + ) + } +} + +private fun assertOldDokkaTasksHaveDeprecatedGroup(taskContainer: TaskContainer) { + taskContainer.names.filter { "Multimodule" in it }.forEach { dokkaTaskName -> + val dokkaTask = taskContainer.getByName(dokkaTaskName) + val expectedGroup = "deprecated" + assertEquals( + expectedGroup, + dokkaTask.group, + "Expected task: ${dokkaTask.path} group to be \"${expectedGroup}\"" + ) + } +} + +private fun assertDokkaTasksHaveDescription(taskContainer: TaskContainer) { + taskContainer.withType().forEach { dokkaTask -> + assertTrue( + @Suppress("UselessCallOnNotNull") // Task.description is nullable, but not inherited as Kotlin sees it. + dokkaTask.description.orEmpty().isNotEmpty(), + "Expected description for task ${dokkaTask.name}" + ) + } +} -- cgit