From dc1f9d20f599ca8f9311b779645bc5e53784ca92 Mon Sep 17 00:00:00 2001 From: Marcin K Date: Tue, 22 Nov 2022 22:16:00 +0100 Subject: [PATCH] Fix package and module description truncation in javadoc (#2751) --- .../kotlin/testApi/testRunner/TestRunner.kt | 3 + .../dokka/javadoc/JavadocPageCreator.kt | 4 +- .../javadoc/JavadocModuleTemplateMapTest.kt | 69 +++++++++++++- .../javadoc/JavadocPackageTemplateMapTest.kt | 95 +++++++++++++++++-- 4 files changed, 158 insertions(+), 13 deletions(-) diff --git a/core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt b/core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt index 3a3eae40e1..31443b2d9f 100644 --- a/core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt +++ b/core/test-api/src/main/kotlin/testApi/testRunner/TestRunner.kt @@ -87,6 +87,9 @@ abstract class AbstractTest, D : DokkaTestGe link.copy( localDirectory = testDirPath.toFile().resolve(link.localDirectory).absolutePath ) + }.toSet(), + includes = sourceSet.includes.map { file -> + testDirPath.toFile().resolve(file) }.toSet() ) } diff --git a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt index a79c6b2008..8081410317 100644 --- a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt +++ b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/JavadocPageCreator.kt @@ -84,7 +84,7 @@ open class JavadocPageCreator(context: DokkaContext) { JavadocContentKind.OverviewSummary, m.sourceSets.toDisplaySourceSets() ) { - title(m.name, m.brief(), documentationVersion, dri = setOf(m.dri), kind = ContentKind.Main) + title(m.name, m.descriptionToContentNodes(), documentationVersion, dri = setOf(m.dri), kind = ContentKind.Main) leafList(setOf(m.dri), ContentKind.Packages, JavadocList( "Packages", "Package", @@ -103,7 +103,7 @@ open class JavadocPageCreator(context: DokkaContext) { JavadocContentKind.PackageSummary, p.sourceSets.toDisplaySourceSets() ) { - title("Package ${p.name}", p.brief(), dri = setOf(p.dri), kind = ContentKind.Packages) + title("Package ${p.name}", p.descriptionToContentNodes(), dri = setOf(p.dri), kind = ContentKind.Packages) fun allClasslikes(c: DClasslike): List = c.classlikes.flatMap { allClasslikes(it) } + c val rootList = p.classlikes.map { allClasslikes(it) }.flatten().groupBy { it::class }.map { (key, value) -> JavadocList(key.tabTitle, key.colTitle, value.map { c -> diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocModuleTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocModuleTemplateMapTest.kt index d192abde46..f6b8439f96 100644 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocModuleTemplateMapTest.kt +++ b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocModuleTemplateMapTest.kt @@ -3,9 +3,10 @@ package org.jetbrains.dokka.javadoc import org.jetbrains.dokka.javadoc.pages.JavadocModulePageNode import org.jetbrains.dokka.javadoc.pages.RowJavadocListEntry import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.test.assertIsInstance import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test -import org.jetbrains.dokka.test.assertIsInstance +import java.io.File internal class JavadocModuleTemplateMapTest : AbstractJavadocTemplateMapTest() { @@ -77,4 +78,70 @@ internal class JavadocModuleTemplateMapTest : AbstractJavadocTemplateMapTest() { assertEquals(DRI("com.test.package1"), assertIsInstance(list[1]).link.dri.single()) } } + + @Test + fun `single class with module documentation (kotlin)`() { + testTemplateMapInline( + query = + """ + /src/module.md + # Module module1 + ABC + + /src/source0.kt + package com.test.package0 + class Test + """, + configuration = config.copy( + sourceSets = config.sourceSets.map { sourceSet -> + sourceSet.copy( + includes = setOf(File("src/module.md")) + ) + }, + moduleName = "module1" + ) + ) { + val modulePage = singlePageOfType() + + val map = modulePage.templateMap + assertEquals("

ABC

", map["subtitle"].toString().trim()) + } + } + + @Test + fun `single class with long module documentation (kotlin)`() { + testTemplateMapInline( + query = + """ + /src/module.md + # Module module1 + Aliquam rerum est vel. Molestiae eos expedita animi repudiandae sed commodi. + Omnis qui ducimus ut et perspiciatis sint. + + Veritatis nam eaque sequi laborum voluptas voluptate aut. + + /src/source0.kt + package com.test.package0 + class Test + """, + configuration = config.copy( + sourceSets = config.sourceSets.map { sourceSet -> + sourceSet.copy( + includes = setOf(File("src/module.md")) + ) + }, + moduleName = "module1" + ) + ) { + val modulePage = singlePageOfType() + + val map = modulePage.templateMap + val expectedText = """ +

Aliquam rerum est vel. Molestiae eos expedita animi repudiandae sed commodi. + Omnis qui ducimus ut et perspiciatis sint.

+

Veritatis nam eaque sequi laborum voluptas voluptate aut.

+ """.trimIndent().replace("\n", "") + assertEquals(expectedText, map["subtitle"].toString().trim()) + } + } } diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocPackageTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocPackageTemplateMapTest.kt index 592d7b0d66..4a761ca6ac 100644 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocPackageTemplateMapTest.kt +++ b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocPackageTemplateMapTest.kt @@ -4,10 +4,9 @@ import org.jetbrains.dokka.javadoc.pages.JavadocContentKind import org.jetbrains.dokka.javadoc.pages.JavadocPackagePageNode import org.jetbrains.dokka.javadoc.pages.RowJavadocListEntry import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.test.assertIsInstance import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test -import org.jetbrains.dokka.test.assertIsInstance import java.io.File internal class JavadocPackageTemplateMapTest : AbstractJavadocTemplateMapTest() { @@ -82,11 +81,33 @@ internal class JavadocPackageTemplateMapTest : AbstractJavadocTemplateMapTest() } } - @Disabled("To be implemented / To be fixed") @Test - fun `single class with package documentation`() { - dualTestTemplateMapInline( - kotlin = + fun `single class with package documentation (java)`() { + testTemplateMapInline( + query = + """ + /src/com/test/package0/package-info.java + /** + * ABC + */ + package com.test.package0; + + /src/com/test/package0/Test.java + package com.test.package0; + public class Test{} + """ + ) { + val packagePage = singlePageOfType() + + val map = packagePage.templateMap + assertEquals("

ABC

", map["subtitle"].toString().trim()) + } + } + + @Test + fun `single class with package documentation (kotlin)`() { + testTemplateMapInline( + query = """ /src/packages.md # Package com.test.package0 @@ -96,23 +117,72 @@ internal class JavadocPackageTemplateMapTest : AbstractJavadocTemplateMapTest() package com.test.package0 class Test """, + configuration = config.copy( + sourceSets = config.sourceSets.map { sourceSet -> + sourceSet.copy( + includes = setOf(File("src/packages.md")) + ) + } + ) + ) { + val packagePage = singlePageOfType() - java = + val map = packagePage.templateMap + assertEquals("

ABC

", map["subtitle"].toString().trim()) + } + } + + @Test + fun `single class with long package documentation (java)`() { + testTemplateMapInline( + query = """ /src/com/test/package0/package-info.java /** - * ABC + * Aliquam rerum est vel. Molestiae eos expedita animi repudiandae sed commodi. + * Omnis qui ducimus ut et perspiciatis sint. + * + * Veritatis nam eaque sequi laborum voluptas voluptate aut. */ package com.test.package0; /src/com/test/package0/Test.java package com.test.package0; public class Test{} + """ + ) { + val packagePage = singlePageOfType() + + val map = packagePage.templateMap + val expectedText = """ +

Aliquam rerum est vel. Molestiae eos expedita animi repudiandae sed commodi. + Omnis qui ducimus ut et perspiciatis sint. + Veritatis nam eaque sequi laborum voluptas voluptate aut.

+ """.trimIndent().replace("\n", "") + assertEquals(expectedText, map["subtitle"].toString().trim()) + } + } + + @Test + fun `single class with long package documentation (kotlin)`() { + testTemplateMapInline( + query = + """ + /src/packages.md + # Package com.test.package0 + Aliquam rerum est vel. Molestiae eos expedita animi repudiandae sed commodi. + Omnis qui ducimus ut et perspiciatis sint. + + Veritatis nam eaque sequi laborum voluptas voluptate aut. + + /src/source0.kt + package com.test.package0 + class Test """, configuration = config.copy( sourceSets = config.sourceSets.map { sourceSet -> sourceSet.copy( - includes = setOf(File("packages.md")) + includes = setOf(File("src/packages.md")) ) } ) @@ -120,7 +190,12 @@ internal class JavadocPackageTemplateMapTest : AbstractJavadocTemplateMapTest() val packagePage = singlePageOfType() val map = packagePage.templateMap - assertEquals("ABD", map["subtitle"].toString().trim()) + val expectedText = """ +

Aliquam rerum est vel. Molestiae eos expedita animi repudiandae sed commodi. + Omnis qui ducimus ut et perspiciatis sint.

+

Veritatis nam eaque sequi laborum voluptas voluptate aut.

+ """.trimIndent().replace("\n", "") + assertEquals(expectedText, map["subtitle"].toString().trim()) } } }