From 8e5c63d035ef44a269b8c43430f43f5c8eebfb63 Mon Sep 17 00:00:00 2001 From: Ignat Beresnev Date: Fri, 10 Nov 2023 11:46:54 +0100 Subject: Restructure the project to utilize included builds (#3174) * Refactor and simplify artifact publishing * Update Gradle to 8.4 * Refactor and simplify convention plugins and build scripts Fixes #3132 --------- Co-authored-by: Adam <897017+aSemy@users.noreply.github.com> Co-authored-by: Oleg Yukhnevich --- .../javadoc/AbstractJavadocTemplateMapTest.kt | 132 ------ .../kotlin/org/jetbrains/dokka/javadoc/Asserts.kt | 22 - .../dokka/javadoc/JavadocAccessorNamingTest.kt | 93 ----- .../javadoc/JavadocAllClassesTemplateMapTest.kt | 54 --- .../javadoc/JavadocClasslikeTemplateMapTest.kt | 461 --------------------- .../dokka/javadoc/JavadocDeprecatedTest.kt | 196 --------- .../jetbrains/dokka/javadoc/JavadocIndexTest.kt | 186 --------- .../javadoc/JavadocLocationTemplateMapTest.kt | 42 -- .../dokka/javadoc/JavadocModuleTemplateMapTest.kt | 150 ------- .../dokka/javadoc/JavadocPackageTemplateMapTest.kt | 204 --------- .../org/jetbrains/dokka/javadoc/JavadocTest.kt | 4 - .../dokka/javadoc/location/JavadocLinkingTest.kt | 78 ---- .../dokka/javadoc/location/JavadocLocationTest.kt | 272 ------------ .../javadoc/packagelist/JavadocPackageListTest.kt | 80 ---- .../dokka/javadoc/search/JavadocIndexSearchTest.kt | 66 --- .../JavadocDocumentableJVMSourceSetFilterTest.kt | 94 ----- .../validity/MultiplatformConfiguredCheckerTest.kt | 96 ----- 17 files changed, 2230 deletions(-) delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/AbstractJavadocTemplateMapTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/Asserts.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAccessorNamingTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAllClassesTemplateMapTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocClasslikeTemplateMapTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocDeprecatedTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocIndexTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocLocationTemplateMapTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocModuleTemplateMapTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocPackageTemplateMapTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLocationTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/packagelist/JavadocPackageListTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/search/JavadocIndexSearchTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilterTest.kt delete mode 100644 plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/validity/MultiplatformConfiguredCheckerTest.kt (limited to 'plugins/javadoc/src/test/kotlin/org/jetbrains/dokka') diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/AbstractJavadocTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/AbstractJavadocTemplateMapTest.kt deleted file mode 100644 index 60265e33..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/AbstractJavadocTemplateMapTest.kt +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -import org.jetbrains.dokka.DokkaConfiguration -import org.jetbrains.dokka.DokkaConfigurationImpl -import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest -import org.jetbrains.dokka.javadoc.location.JavadocLocationProvider -import org.jetbrains.dokka.javadoc.pages.JavadocPageNode -import org.jetbrains.dokka.javadoc.renderer.JavadocContentToTemplateMapTranslator -import org.jetbrains.dokka.jdk -import org.jetbrains.dokka.kotlinStdlib -import org.jetbrains.dokka.model.withDescendants -import org.jetbrains.dokka.pages.RootPageNode -import org.jetbrains.dokka.plugability.* - -internal abstract class AbstractJavadocTemplateMapTest : BaseAbstractTest() { - protected var config: DokkaConfigurationImpl = dokkaConfiguration { - format = "javadoc" - suppressObviousFunctions = false - sourceSets { - sourceSet { - sourceRoots = listOf("src") - analysisPlatform = "jvm" - externalDocumentationLinks = listOf( - DokkaConfiguration.ExternalDocumentationLink.jdk(8), - DokkaConfiguration.ExternalDocumentationLink.kotlinStdlib() - ) - classpath = listOfNotNull(jvmStdlibPath) - } - } - } - - data class Result( - val rootPageNode: RootPageNode, - val context: DokkaContext - ) { - - val translator: JavadocContentToTemplateMapTranslator by lazy { - val locationProvider = context.plugin() - .querySingle { locationProviderFactory } - .getLocationProvider(rootPageNode) as JavadocLocationProvider - - JavadocContentToTemplateMapTranslator(locationProvider, context) - } - - val JavadocPageNode.templateMap: Map get() = translator.templateMapForPageNode(this) - - inline fun allPagesOfType(): List { - return rootPageNode.withDescendants().filterIsInstance().toList() - } - - inline fun firstPageOfType(): T { - return rootPageNode.withDescendants().filterIsInstance().first() - } - - inline fun firstPageOfTypeOrNull(): T? { - return rootPageNode.withDescendants().filterIsInstance().firstOrNull() - } - - inline fun singlePageOfType(): T { - return rootPageNode.withDescendants().filterIsInstance().single() - } - } - - fun testTemplateMapInline( - query: String, - configuration: DokkaConfigurationImpl = config, - pluginsOverride: List = emptyList(), - assertions: Result.() -> Unit - ) { - testInline(query, configuration, pluginOverrides = pluginsOverride) { - renderingStage = { rootPageNode, dokkaContext -> - val preprocessors = dokkaContext.plugin().query { javadocPreprocessors } - val transformedRootPageNode = preprocessors.fold(rootPageNode) { acc, pageTransformer -> - pageTransformer(acc) - } - - Result(transformedRootPageNode, dokkaContext).assertions() - } - } - } - - fun dualTestTemplateMapInline( - kotlin: String? = null, - java: String? = null, - configuration: DokkaConfigurationImpl = config, - pluginsOverride: List = emptyList(), - assertions: Result.() -> Unit - ) { - val kotlinException = kotlin?.let { - runCatching { - testTemplateMapInline( - query = kotlin, - configuration = configuration, - pluginsOverride = pluginsOverride, - assertions = assertions - ) - }.exceptionOrNull() - } - - val javaException = java?.let { - runCatching { - testTemplateMapInline( - query = java, - configuration = configuration, - pluginsOverride = pluginsOverride, - assertions = assertions - ) - }.exceptionOrNull() - } - - if (kotlinException != null && javaException != null) { - throw AssertionError( - "Kotlin and Java Code failed assertions\n" + - "Kotlin: ${kotlinException.message}\n" + - "Java : ${javaException.message}", - kotlinException - ) - } - - if (kotlinException != null) { - throw AssertionError("Kotlin Code failed assertions", kotlinException) - } - - if (javaException != null) { - throw AssertionError("Java Code failed assertions", javaException) - } - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/Asserts.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/Asserts.kt deleted file mode 100644 index 2854ac7c..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/Asserts.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.contract - -// TODO replace with assertIs from kotlin-test as part of #2924 -@OptIn(ExperimentalContracts::class) -inline fun assertIsInstance(obj: Any?): T { - contract { - returns() implies (obj is T) - } - - if (obj is T) { - return obj - } - - throw AssertionError("Expected instance of type ${T::class.qualifiedName} but found $obj") -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAccessorNamingTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAccessorNamingTest.kt deleted file mode 100644 index 95ce4d27..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAccessorNamingTest.kt +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -import org.jsoup.Jsoup -import utils.TestOutputWriterPlugin -import kotlin.test.Test -import kotlin.test.assertEquals -import kotlin.test.assertTrue - -internal class JavadocAccessorNamingTest : AbstractJavadocTemplateMapTest() { - - val configuration = dokkaConfiguration { - suppressObviousFunctions = true - sourceSets { - sourceSet { - sourceRoots = listOf("src/main/kotlin") - classpath = listOfNotNull(jvmStdlibPath) - } - } - } - - /** - * This is a quick sanity check for the AccessorMethodNamingTest - */ - @Test - fun verifySpecialIsRuleIsApplied() { - val writerPlugin = TestOutputWriterPlugin() - - testInline( - """ - /src/main/kotlin/sample/TestCase.kt - package sample - - /** - * Test links: - * - [TestCase.issuesFetched] - * - [TestCase.isFoo] - */ - data class TestCase( - var issuesFetched: Int, - var isFoo: String, - ) - """.trimIndent(), - configuration, - cleanupOutput = false, - pluginOverrides = listOf(writerPlugin, JavadocPlugin()) - ) { - renderingStage = { _, _ -> - val html = writerPlugin.writer.contents.getValue("sample/TestCase.html").let { Jsoup.parse(it) } - val props = html - .select("#memberSummary_tabpanel") - .select("th[scope=row].colSecond") - .select("code") - .map { it.text() } - .toSet() - // In K2 name of accessors parameter is `value` - assertTrue( - setOf( - "getIssuesFetched()", - "setIssuesFetched(Integer issuesFetched)", - "isFoo()", - "setFoo(String isFoo)", - ) == props || setOf( - "getIssuesFetched()", - "setIssuesFetched(Integer value)", - "isFoo()", - "setFoo(String value)", - ) == props - ) - - val descriptionLinks = html - .select("div.description") - .select("p") - .select("a") - .eachAttr("href") - .map { a -> a.takeLastWhile { it != '#' } } - - assertEquals(setOf( - "issuesFetched", - "isFoo()", - ), descriptionLinks.toSet()) - - // Make sure that the ids from above actually exist - assertEquals(1, html.select("[id = isFoo()]").size) - // Bug! Nothing in the doc has the right id - assertEquals(0, html.select("[id = issuesFetched]").size) - } - } - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAllClassesTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAllClassesTemplateMapTest.kt deleted file mode 100644 index 8d7ff1ea..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocAllClassesTemplateMapTest.kt +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -import org.jetbrains.dokka.javadoc.pages.AllClassesPage -import org.jetbrains.dokka.javadoc.pages.LinkJavadocListEntry -import org.jetbrains.dokka.links.DRI -import org.jetbrains.dokka.pages.ContentKind -import org.junit.jupiter.api.Tag -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class JavadocAllClassesTemplateMapTest : AbstractJavadocTemplateMapTest() { - @Test - @Tag("onlyDescriptors") // https://github.com/Kotlin/dokka/issues/3250 - fun `two classes from different packages`() { - dualTestTemplateMapInline( - """ - /src/source0.kt - package package0 - /** - * Documentation for ClassA - */ - class ClassA - - /src/source1.kt - package package1 - /** - * Documentation for ClassB - */ - class ClassB - """ - ) { - val map = singlePageOfType().templateMap - assertEquals("main", map["kind"]) - assertEquals("All Classes", map["title"]) - - val list = assertIsInstance>(map["list"]) - assertEquals(2, list.size, "Expected two classes") - - val classA = assertIsInstance(list[0]) - assertEquals("ClassA", classA.name) - assertEquals(DRI("package0", "ClassA"), classA.dri.single()) - assertEquals(ContentKind.Classlikes, classA.kind) - - val classB = assertIsInstance(list[1]) - assertEquals("ClassB", classB.name) - assertEquals(DRI("package1", "ClassB"), classB.dri.single()) - assertEquals(ContentKind.Classlikes, classB.kind) - } - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocClasslikeTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocClasslikeTemplateMapTest.kt deleted file mode 100644 index fd382d42..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocClasslikeTemplateMapTest.kt +++ /dev/null @@ -1,461 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -import org.jetbrains.dokka.javadoc.pages.JavadocClasslikePageNode -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class JavadocClasslikeTemplateMapTest : AbstractJavadocTemplateMapTest() { - - @Test - fun `empty class`() { - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - /** - * Documentation for TestClass - */ - class TestClass - """, - java = - """ - /src/com/test/package0/TestClass.java - package com.test.package0; - /** - * Documentation for TestClass - */ - public final class TestClass {} - """ - ) { - val map = singlePageOfType().templateMap - assertEquals("TestClass", map["name"]) - assertEquals("TestClass", map["title"]) - assertEquals("com.test.package0", map["packageName"]) - assertEquals("

Documentation for TestClass

", map["classlikeDocumentation"]) - assertEquals("Documentation for TestClass", map["subtitle"]) - assertEquals("public final class TestClass", map.signatureWithModifiers()) - } - } - - @Test - fun `single function`() { - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - /** - * Documentation for TestClass - */ - class TestClass { - /** - * Documentation for testFunction - */ - fun testFunction(): String = "" - } - """, - java = - """ - /src/com/test/package0/TestClass.java - package com.test.package0 - /** - * Documentation for TestClass - */ - public final class TestClass { - /** - * Documentation for testFunction - */ - public final String testFunction() { - return ""; - } - } - """ - ) { - val map = singlePageOfType().templateMap - - assertEquals("TestClass", map["name"]) - assertEquals("TestClass", map["title"]) - assertEquals("com.test.package0", map["packageName"]) - assertEquals("

Documentation for TestClass

", map["classlikeDocumentation"]) - assertEquals("Documentation for TestClass", map["subtitle"]) - assertEquals("public final class", map.modifiers()) - assertEquals("TestClass", map.signatureWithoutModifiers()) - - val methods = assertIsInstance>(map["methods"]) - val ownMethods = assertIsInstance>(methods["own"]) - assertEquals(1, ownMethods.size, "Expected only one method") - val method = assertIsInstance>(ownMethods.single()) - assertEquals("Documentation for testFunction", method["brief"]) - assertEquals("testFunction", method["name"]) - assertEquals( - 0, assertIsInstance>(method["parameters"]).size, - "Expected no parameters" - ) - assertEquals("final String", method.modifiers()) - assertEquals("testFunction()", method.signatureWithoutModifiers()) - } - } - - @Test - fun `class with annotation`(){ - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - @MustBeDocumented - annotation class Author(val name: String) - - @Author( - name = "Benjamin Franklin" - ) - class TestClass {` - - @Author( - name = "Franklin D. Roosevelt" - ) - fun testFunction(): String = "" - } - """, - java = - """ - /src/com/test/package0/Author.java - package com.test.package0 - import java.lang.annotation.Documented; - - @Documented - public @interface Author { - String name(); - } - /src/com/test/package0/TestClass.java - package com.test.package0 - - @Author( - name = "Benjamin Franklin" - ) - public final class TestClass { - - @Author( - name = "Franklin D. Roosevelt" - ) - public final String testFunction() { - return ""; - } - } - """ - ){ - val map = allPagesOfType().first { it.name == "TestClass" }.templateMap - assertEquals("TestClass", map["name"]) - val signature = assertIsInstance>(map["signature"]) - assertEquals("@Author(name = "Benjamin Franklin")", signature["annotations"]) - - val methods = assertIsInstance>(map["methods"]) - val ownMethods = assertIsInstance>(methods["own"]) - val method = assertIsInstance>(ownMethods.single()) - val methodSignature = assertIsInstance>(method["signature"]) - assertEquals("@Author(name = "Franklin D. Roosevelt")", methodSignature["annotations"]) - } - } - - @Test - fun `simple enum`(){ - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - enum class ClockDays { - /** - * Sample docs for first - */ - FIRST, - /** - * Sample docs for second - */ - SECOND - } - """, - java = - """ - /src/com/test/package0/TestClass.java - package com.test.package0; - public enum ClockDays { - /** - * Sample docs for first - */ - FIRST, - /** - * Sample docs for second - */ - SECOND - } - """ - ){ - val map = singlePageOfType().templateMap - assertEquals("ClockDays", map["name"]) - assertEquals("enum", map["kind"]) - val entries = assertIsInstance>>(map["entries"]) - assertEquals(2, entries.size) - - val (first, second) = entries.sortedBy { it["brief"] as String } - assertEquals("

Sample docs for first

", first["brief"]) - assertEquals("

Sample docs for second

", second["brief"]) - - assertEquals("FIRST", first.signatureWithoutModifiers()) - assertEquals("SECOND", second.signatureWithoutModifiers()) - } - } - - @Test - fun `documented function parameters`(){ - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - class TestClass { - /** - * Simple parameters list to check out - * @param simple simple String parameter - * @param parameters simple Integer parameter - * @param list simple Boolean parameter - * @return just a String - */ - fun testFunction(simple: String?, parameters: Int?, list: Boolean?): String { - return "" - } - } - """, - java = - """ - /src/com/test/package0/TestClass.java - package com.test.package0; - public final class TestClass { - /** - * Simple parameters list to check out - * @param simple simple String parameter - * @param parameters simple Integer parameter - * @param list simple Boolean parameter - * @return just a String - */ - public final String testFunction(String simple, Integer parameters, Boolean list) { - return ""; - } - } - """ - ) { - val map = singlePageOfType().templateMap - assertEquals("TestClass", map["name"]) - - val methods = assertIsInstance>(map["methods"]) - val testFunction = assertIsInstance>>(methods["own"]).single() - assertEquals("Simple parameters list to check out", testFunction["brief"]) - - val (first, second, third) = assertIsInstance>>(testFunction["parameters"]) - assertParameterNode( - node = first, - expectedName = "simple", - expectedType = "String", - expectedDescription = "simple String parameter" - ) - assertParameterNode( - node = second, - expectedName = "parameters", - expectedType = "Integer", - expectedDescription = "simple Integer parameter" - ) - assertParameterNode( - node = third, - expectedName = "list", - expectedType = "Boolean", - expectedDescription = "simple Boolean parameter" - ) - } - } - - @Test - fun `with generic parameters`(){ - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - import java.io.Serializable - - class Generic { - fun sampleFunction(): D = TODO() - } - """, - java = - """ - /src/com/test/package0/Generic.java - package com.test.package0; - import java.io.Serializable; - - public final class Generic { - public final D sampleFunction(){ - return null; - } - } - """ - ) { - val map = singlePageOfType().templateMap - assertEquals("Generic", map["name"]) - - assertEquals( - "public final class Generic<T extends Serializable>", - map.signatureWithModifiers() - ) - val methods = assertIsInstance>(map["methods"]) - val ownMethods = assertIsInstance>(methods["own"]).first() - val sampleFunction = assertIsInstance>(ownMethods) - - assertEquals("final <D extends T> D sampleFunction()", sampleFunction.signatureWithModifiers()) - } - } - - @Test - fun `class with top-level const`() { - dualTestTemplateMapInline( - kotlin = - """ - /src/Test.kt - package com.test.package0 - - const val TEST_VAL = "test" - """, - java = - """ - /src/com/test/package0/TestKt.java - package com.test.package0; - - public final class TestKt { - public static final String TEST_VAL = "test"; - } - """ - ) { - val map = singlePageOfType().templateMap - val properties = assertIsInstance>(map["properties"]) - val property = assertIsInstance>(properties.first()) - assertEquals("public final static String TEST_VAL", "${property["modifiers"]} ${property["signature"]}") - } - } - - @Test - fun `@author @since @return method tags`(){ - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - class TestClass { - /** - * Testing @author @since @return method tags - * @since 1.2 - * @since 08 april 2023 - * @return parameter's value in lower case - */ - fun testFunction(testParam: String?): String { - return testParam?.lowercase() ?: "" - } - } - """, - java = - """ - /src/com/test/package0/TestClass.java - package com.test.package0; - public final class TestClass { - /** - * Testing @author @since @return method tags - * @since 1.2 - * @since 08 april 2023 - * @return parameter's value in lower case - */ - public final String testFunction(String testParam) { - return testParam.toLowerCase(); - } - } - """ - ) { - val map = singlePageOfType().templateMap - assertEquals("TestClass", map["name"]) - - val methods = assertIsInstance>(map["methods"]) - val testFunction = assertIsInstance>>(methods["own"]).single() - assertEquals("Testing @author @since @return method tags", testFunction["brief"]) - - assertEquals("testFunction", testFunction["name"]) - assertEquals(listOf("

1.2

", "

08 april 2023

"), testFunction["sinceTagContent"]) - assertEquals("

parameter's value in lower case

", testFunction["returnTagContent"]) - } - } - - @Test - fun `@author @since class tags`(){ - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - /** - * Testing @author @since class tags - * @author Test Author - * @author Test Author2 - * @author Test Author3 - * @since 1.2 - * @since 08 april 2023 - */ - class TestClass { - fun testFunction(testParam: String?): String { - return testParam?.lowercase() ?: "" - } - } - """, - java = - """ - /src/com/test/package0/TestClass.java - package com.test.package0; - /** - * Testing @author @since class tags - * @author Test Author - * @author Test Author2 - * @author Test Author3 - * @since 1.2 - * @since 08 april 2023 - */ - public final class TestClass { - public final String testFunction(String testParam) { - return testParam.toLowerCase(); - } - } - """ - ) { - val map = singlePageOfType().templateMap - - assertEquals("TestClass", map["name"]) - assertEquals("

Testing @author @since class tags

", map["classlikeDocumentation"]) - assertEquals(listOf("

Test Author

", "

Test Author2

", "

Test Author3

"), map["authorTagContent"]) - assertEquals(listOf("

1.2

", "

08 april 2023

"), map["sinceTagContent"]) - } - } - - private fun assertParameterNode(node: Map, expectedName: String, expectedType: String, expectedDescription: String){ - assertEquals(expectedName, node["name"]) - assertEquals(expectedType, node["type"]) - assertEquals(expectedDescription, node["description"]) - } - - private fun Map.signatureWithModifiers(): String = "${modifiers()} ${signatureWithoutModifiers()}" - - @Suppress("UNCHECKED_CAST") - private fun Map.signatureWithoutModifiers(): String = (get("signature") as Map)["signatureWithoutModifiers"] as String - - @Suppress("UNCHECKED_CAST") - private fun Map.modifiers(): String = (get("signature") as Map)["modifiers"] as String - -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocDeprecatedTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocDeprecatedTest.kt deleted file mode 100644 index 404e1aed..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocDeprecatedTest.kt +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -import org.jetbrains.dokka.javadoc.pages.DeprecatedPage -import org.jetbrains.dokka.javadoc.renderer.TemplateMap -import org.junit.jupiter.api.Tag -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class JavadocDeprecatedTest : AbstractJavadocTemplateMapTest() { - - @Test - fun `generates correct number of sections`() { - testDeprecatedPageTemplateMaps { templateMap -> - @Suppress("UNCHECKED_CAST") - assertEquals(6, (templateMap["sections"] as List).size) - } - } - - @Test - fun `finds correct number of element for removal`() { - testDeprecatedPageTemplateMaps { templateMap -> - val map = templateMap.section("For Removal") - assertEquals(1, map.elements().size) - } - } - - @Test - fun `finds correct number of deprecated constructors`() { - testDeprecatedPageTemplateMaps { templateMap -> - val map = templateMap.section("Constructors") - assertEquals(1, map.elements().size) - } - } - - @Test - fun `finds correct number of deprecated classes`() { - testDeprecatedPageTemplateMaps { templateMap -> - val map = templateMap.section("Classes") - assertEquals(1, map.elements().size) - } - } - - @Test - fun `finds correct number of deprecated enums`() { - testDeprecatedPageTemplateMaps { templateMap -> - val map = templateMap.section("Enums") - assertEquals(1, map.elements().size) - } - } - - @Test - fun `finds correct number of deprecated exceptions`() { - testDeprecatedPageTemplateMaps { templateMap -> - val map = templateMap.section("Exceptions") - assertEquals(2, map.elements().size) - } - } - - @Tag("onlyDescriptors") // https://github.com/Kotlin/dokka/issues/3266 - `describeConstable` is in deprecated page on Java 17 - @Test - fun `finds correct number of deprecated methods`() { - testDeprecatedPageTemplateMaps { templateMap -> - //We are checking whether we will have an additional function for enum classes - fun hasAdditionalFunction() = - AnnotationTarget.ANNOTATION_CLASS::class.java.methods.any { it.name == "describeConstable" } - - val map = templateMap.section("Methods") - assertEquals(if (hasAdditionalFunction()) 5 else 4, map.elements().size) - } - } - - @Test - fun `should be sorted by position`() { - testDeprecatedPageTemplateMaps { templateMap -> - @Suppress("UNCHECKED_CAST") - val contents = (templateMap["sections"] as List).map { it["caption"] } - - // maybe some other ordering is required by the javadoc spec - // but it has to be deterministic - val expected = "Classes, Exceptions, Methods, Constructors, Enums, For Removal" - val actual = contents.joinToString(separator = ", ") - - assertEquals(expected, actual) - } - } - - @Test - fun `provides correct information for deprecated element`() { - testDeprecatedPageTemplateMaps { templateMap -> - val map = templateMap.section("Enums") - map.elements().first().let { element -> - assertEquals("package1.ClassCEnum", element["name"]) - assertEquals("package1/ClassCEnum.html", element["address"]) - assertEquals("Documentation for ClassCEnum", element["description"]) - } - } - } - - private val query = """ - /src/source0.kt - package package0 - /** - * Documentation for ClassA - */ - @Deprecated("Bo tak") - class ClassA { - fun a() {} - @Deprecated("Bo tak") - fun b() {} - fun c() {} - } - - /src/source1.kt - package package1 - /** - * Documentation for ClassB - */ - class ClassB { - fun d() {} - @Deprecated("Bo tak") - fun e() {} - @Deprecated("Bo tak") - fun f() {} - } - - /src/source2.kt - package package1 - /** - * Documentation for ClassB - */ - class ClassC { - fun g() {} - fun h() {} - fun j() {} - - class InnerClass { - fun k() {} - } - } - - /src/source3.kt - package package1 - /** - * Documentation for ClassCEnum - */ - @Deprecated("Bo tak") - enum class ClassCEnum { - A, D, E - } - - /src/source4.java - package package1; - /** - * Documentation for ClassJava - */ - public class ClassJava { - @Deprecated - public ClassJava() {} - @Deprecated(forRemoval = true) - public void deprecatedMethod() {} - } - - /src/source5.java - package package1; - /** - * Documentation for ClassJavaException - */ - @Deprecated - public class ClassJavaException extends Exception { } - - /src/source6.kt - package package1 - /** - * Documentation for ClassKotlinException - */ - @Deprecated - class ClassKotlinException: Exception() {} - """.trimIndent() - - private fun testDeprecatedPageTemplateMaps(operation: (TemplateMap) -> Unit) = - testTemplateMapInline(query) { - operation(firstPageOfType().templateMap) - } - - @Suppress("UNCHECKED_CAST") - private fun TemplateMap.section(name: String) = - (this["sections"] as List).first { it["caption"] == name } - - @Suppress("UNCHECKED_CAST") - private fun TemplateMap.elements() = - this["elements"] as List -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocIndexTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocIndexTest.kt deleted file mode 100644 index e574aeac..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocIndexTest.kt +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -import org.jetbrains.dokka.javadoc.pages.IndexPage -import org.jetbrains.dokka.javadoc.renderer.TemplateMap -import org.jetbrains.dokka.links.DRI -import kotlin.test.Test -import kotlin.test.assertEquals -import kotlin.test.assertNotNull - -internal class JavadocIndexTest : AbstractJavadocTemplateMapTest() { - - private val commonTestQuery = """ - /src/source0.kt - package package0 - /** - * Documentation for ClassA - */ - class ClassA { - fun a() {} - fun b() {} - fun c() {} - } - - /src/source1.kt - package package1 - /** - * Documentation for ClassB - */ - class ClassB { - fun d() {} - fun e() {} - fun f() {} - } - - /src/source2.kt - package package1 - /** - * Documentation for ClassB - */ - class ClassC { - fun g() {} - fun h() {} - fun j() {} - - class InnerClass { - fun k() {} - } - } - - /src/source3.kt - package package1 - /** - * Documentation for ClassCEnum - */ - enum class ClassCEnum { - A, D, E - } - """.trimIndent() - - @Test - fun `generates correct number of index pages`() { - testIndexPages(commonTestQuery) { indexPages -> - // index pages with letters of the alphabet, so A, B, C, D, E, etc - assertEquals(13, indexPages.size) - } - } - - @Test - fun `handles correct number of elements`() { - //We are checking whether we will have an additional function for enum classes - // e.g. since Java 12 it has `describeConstable` - fun hasAdditionalFunction() = - AnnotationTarget.ANNOTATION_CLASS::class.java.methods.any { it.name == "describeConstable" } - - testIndexPages(commonTestQuery) { indexPages -> - assertEquals("A-index: a, A\n" + - "B-index: b\n" + - "C-index: c, ClassA, ClassB, ClassC, ClassC.InnerClass, ClassCEnum, compareTo\n" + - (if (hasAdditionalFunction()) "D-index: d, D, describeConstable\n" else "D-index: d, D\n") + - "E-index: e, E, equals, equals\n" + - "F-index: f\n" + - "G-index: g, getDeclaringClass, getEntries, getName, getOrdinal\n" + - "H-index: h, hashCode, hashCode\n" + - "J-index: j\n" + - "K-index: k\n" + - "P-index: package0, package1\n" + - "T-index: toString, toString\n" + - "V-index: valueOf, values", - indexPages.joinToString("\n") { it.title + ": " + it.elements.joinToString { it.getId() } }) - assertEquals(if (hasAdditionalFunction()) 34 else 33, indexPages.sumBy { it.elements.size }) - } - } - - @Test - fun `templateMap for class index`() { - testIndexPagesTemplateMaps(commonTestQuery) { templateMaps -> - @Suppress("UNCHECKED_CAST") - val element = (templateMaps[2]["elements"] as List)[1] - assertEquals("../package0/ClassA.html", element["address"]) - assertEquals("ClassA", element["name"]) - assertEquals("class", element["type"]) - assertEquals("Documentation for ClassA", element["description"]) - assertEquals("package0", element["origin"]) - - } - } - - @Test - fun `templateMap for enum entry index`() { - testIndexPagesTemplateMaps(commonTestQuery) { templateMaps -> - @Suppress("UNCHECKED_CAST") - val element = (templateMaps[0]["elements"] as List).last() - assertEquals("../package1/ClassCEnum.html#A", element["address"]) - assertEquals("A", element["name"]) - assertEquals("enum entry", element["type"]) - assertEquals(" ", element["description"]) - assertEquals("package1.ClassCEnum", element["origin"]) - - } - } - - @Test - fun `templateMap for function index`() { - testIndexPagesTemplateMaps(commonTestQuery) { templateMaps -> - @Suppress("UNCHECKED_CAST") - val element = (templateMaps[0]["elements"] as List).first() - assertEquals("../package0/ClassA.html#a()", element["address"]) - assertEquals("a()", element["name"]) - assertEquals("function", element["type"]) - assertEquals(" ", element["description"]) - assertEquals("package0.ClassA", element["origin"]) - - } - } - - @Test - fun `should sort overloaded functions deterministically`() { - val query = """ - /src/overloaded.kt - package overloaded - - class Clazz { - fun funName(param: List) {} - fun funName(param: String) {} - fun funName(param: Map>) {} - fun funName(param: Int) {} - } - """.trimIndent() - - testIndexPages(query) { allPages -> - val indexPage = allPages.find { it.elements.any { el -> el.getId() == "funName" } } - assertNotNull(indexPage) { "Index page with functions not found" } - - val indexElementDRIs = indexPage.elements.map { it.getDRI() } - assertEquals(4, indexElementDRIs.size) - indexElementDRIs.forEach { - assertEquals("overloaded", it.packageName) - assertEquals("Clazz", it.classNames) - assertEquals("funName", it.callable!!.name) - assertEquals(1, it.callable!!.params.size) - } - - assertEquals("kotlin.Int", indexElementDRIs[0].getParam(0)) - assertEquals("kotlin.String", indexElementDRIs[1].getParam(0)) - assertEquals("kotlin.collections.List[kotlin.String]", indexElementDRIs[2].getParam(0)) - assertEquals("kotlin.collections.Map[kotlin.String,kotlin.String]", indexElementDRIs[3].getParam(0)) - } - } - - private fun DRI.getParam(index: Int) = this.callable!!.params[index].toString() - - private fun testIndexPages(query: String, operation: (List) -> Unit) { - testTemplateMapInline(query) { - operation(allPagesOfType()) - } - } - - private fun testIndexPagesTemplateMaps(query: String, operation: (List) -> Unit) = - testTemplateMapInline(query) { - operation(allPagesOfType().map { it.templateMap }) - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocLocationTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocLocationTemplateMapTest.kt deleted file mode 100644 index 1e11dd39..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocLocationTemplateMapTest.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -import org.jetbrains.dokka.javadoc.pages.JavadocClasslikePageNode -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class JavadocLocationTemplateMapTest : AbstractJavadocTemplateMapTest() { - @Test - fun `should have correct location to root from class`(){ - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - /** - * Documentation for TestClass - */ - class TestClass - """, - java = - """ - /src/com/test/package0/TestClass.java - package com.test.package0; - /** - * Documentation for TestClass - */ - public final class TestClass {} - """ - ) { - val map = singlePageOfType().templateMap - assertEquals("TestClass", map["name"]) - assertEquals("TestClass", map["title"]) - //This is taken from the expected location of files based on the package, so: - //com -> test -> package0 - assertEquals("../../../", map["pathToRoot"]) - } - } -} 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 deleted file mode 100644 index 674c9af3..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocModuleTemplateMapTest.kt +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -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 java.io.File -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class JavadocModuleTemplateMapTest : AbstractJavadocTemplateMapTest() { - - @Test - fun singleEmptyClass() { - dualTestTemplateMapInline( - kotlin = - """ - /src/source.kt - package com.test.package - class Test - """, - java = - """ - /src/com/test/package/Source.java - package com.test.package; - public class Test { } - """ - ) { - val moduleTemplateMap = singlePageOfType().templateMap - assertEquals("main", moduleTemplateMap["kind"]) - assertEquals("root", moduleTemplateMap["title"]) - assertEquals("", moduleTemplateMap["subtitle"]) - assertEquals("Packages", moduleTemplateMap["tabTitle"]) - assertEquals("Package", moduleTemplateMap["colTitle"]) - assertEquals("", moduleTemplateMap["pathToRoot"]) - - val list = moduleTemplateMap["list"] as List<*> - assertEquals(1, list.size, "Expected only one entry in 'list'") - val rowListEntry = assertIsInstance(list.first()) - - assertEquals("com.test", rowListEntry.link.name) - assertEquals(DRI("com.test"), rowListEntry.link.dri.single()) - } - } - - @Test - fun multiplePackages() { - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - class Test0 - - /src/source1.kt - package com.test.package1 - class Test1 - """, - java = - """ - /src/com/test/package0/Test0.java - package com.test.package0; - public class Test0 {} - - /src/com/test/package1/Test1.java - package com.test.package1; - public class Test1 {} - """, - configuration = config.copy(moduleVersion = "1.2.3-SNAPSHOT") - ) { - val moduleTemplateMap = singlePageOfType().templateMap - assertEquals("1.2.3-SNAPSHOT", moduleTemplateMap["version"]) - val list = assertIsInstance>(moduleTemplateMap["list"]) - assertEquals(2, list.size, "Expected two entries in 'list'") - assertEquals("com.test.package0", assertIsInstance(list[0]).link.name) - assertEquals("com.test.package1", assertIsInstance(list[1]).link.name) - assertEquals(DRI("com.test.package0"), assertIsInstance(list[0]).link.dri.single()) - 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 deleted file mode 100644 index 12e2485e..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocPackageTemplateMapTest.kt +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc - -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 java.io.File -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class JavadocPackageTemplateMapTest : AbstractJavadocTemplateMapTest() { - - @Test - @Suppress("UNCHECKED_CAST") - fun `single class`() { - dualTestTemplateMapInline( - kotlin = - """ - /src/source.kt - package com.test.package0 - class Test - """, - java = - """ - /src/com/test/package0/Test.java - package com.test.package0; - public class Test {} - """ - ) { - val map = singlePageOfType().templateMap - assertEquals("Class Summary", ((map["lists"] as List<*>).first() as Map)["tabTitle"]) - assertEquals("Class", ((map["lists"] as List<*>).first() as Map)["colTitle"]) - assertEquals("Package com.test.package0", map["title"]) - assertEquals("", map["subtitle"]) - assertEquals("package", map["kind"]) - - val list = assertIsInstance>(((map["lists"] as List<*>).first() as Map)["list"]) - val entry = assertIsInstance(list.single()) - assertEquals("Test", entry.link.name) - assertEquals(JavadocContentKind.Class, entry.link.kind) - assertEquals(DRI("com.test.package0", "Test"), entry.link.dri.single()) - } - } - - @Test - @Suppress("UNCHECKED_CAST") - fun `multiple packages`() { - dualTestTemplateMapInline( - kotlin = - """ - /src/source0.kt - package com.test.package0 - class Test0 - - /src/source1.kt - package com.test.package1 - class Test1 - """, - java = - """ - /src/com/test/package0/Test0.java - package com.test.package0; - public class Test0 {} - - /src/com/test/package1/Test1.java - package com.test.package1; - public class Test1 {} - """ - ) { - val packagePages = allPagesOfType() - packagePages.forEach { page -> - val map = page.templateMap - assertEquals("Class Summary", ((map["lists"] as List<*>).first() as Map)["tabTitle"]) - assertEquals("Class", ((map["lists"] as List<*>).first() as Map)["colTitle"]) - assertEquals("", map["subtitle"]) - assertEquals("package", map["kind"]) - } - - assertEquals(2, packagePages.size, "Expected two package pages") - } - } - - @Test - 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 - ABC - - /src/source0.kt - 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() - - 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 - /** - * 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("src/packages.md")) - ) - } - ) - ) { - 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()) - } - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocTest.kt deleted file mode 100644 index 4dd61777..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/JavadocTest.kt +++ /dev/null @@ -1,4 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt deleted file mode 100644 index fac8edea..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLinkingTest.kt +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc.location - -import org.jetbrains.dokka.DokkaConfiguration -import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest -import org.jetbrains.dokka.jdk -import org.jetbrains.dokka.kotlinStdlib -import org.jetbrains.dokka.model.doc.DocumentationLink -import org.jetbrains.dokka.model.doc.Text -import org.jetbrains.dokka.utilities.cast -import utils.TestOutputWriterPlugin -import kotlin.test.Test -import kotlin.test.assertEquals - -class JavadocLinkingTest : BaseAbstractTest() { - - @Test - fun lineBrokenLink() { - val config = dokkaConfiguration { - sourceSets { - sourceSet { - sourceRoots = listOf("jvmSrc/") - externalDocumentationLinks = listOf( - DokkaConfiguration.ExternalDocumentationLink.jdk(8), - DokkaConfiguration.ExternalDocumentationLink.kotlinStdlib(), - ) - analysisPlatform = "jvm" - } - } - } - testInline( - """ - |/jvmSrc/javadoc/test/SomeClass.kt - | - |package example - | - |class SomeClass { - | fun someFun(x: Int): Int = 1 - |} - | - |/jvmSrc/javadoc/test/SomeJavaDocExample.java - | - |package example; - | - |/** - | * Here comes some comment - | * - | * {@link example.SomeClass#someFun(int) someName(ads, - | * dsa)} - | * - | * longer comment - | */ - |public class SomeJavaDocExample { - | public void someFunc(int integer, Object object) { - | } - |} - """.trimMargin(), - config, - pluginOverrides = listOf(TestOutputWriterPlugin()) - ) { - documentablesMergingStage = { - it.packages.single() - .classlikes.single { classlike -> classlike.name == "SomeJavaDocExample" } - .documentation.values.single() - .children.single() - .children.single() - .children.single { - it is DocumentationLink - }.children.filterIsInstance().single { it.body.contains("someName") }.cast().body.run { - assertEquals("someName(ads, dsa)", this) - } - } - } - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLocationTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLocationTest.kt deleted file mode 100644 index bef81372..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/location/JavadocLocationTest.kt +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc.location - -import org.jetbrains.dokka.DokkaConfiguration -import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest -import org.jetbrains.dokka.javadoc.JavadocPlugin -import org.jetbrains.dokka.javadoc.pages.JavadocClasslikePageNode -import org.jetbrains.dokka.javadoc.pages.JavadocFunctionNode -import org.jetbrains.dokka.javadoc.pages.JavadocPackagePageNode -import org.jetbrains.dokka.javadoc.renderer.JavadocContentToHtmlTranslator -import org.jetbrains.dokka.jdk -import org.jetbrains.dokka.kotlinStdlib -import org.jetbrains.dokka.model.firstChildOfType -import org.jetbrains.dokka.pages.RootPageNode -import org.jetbrains.dokka.plugability.DokkaContext -import org.jetbrains.dokka.plugability.plugin -import org.jetbrains.dokka.plugability.querySingle -import kotlin.test.Test -import kotlin.test.assertEquals - -class JavadocLocationTest : BaseAbstractTest() { - - @Test - fun `resolved signature with external links`() { - val query = """ - |/jvmSrc/javadoc/test/Test.kt - |package javadoc.test - |import java.io.Serializable - |class Test : Serializable, Cloneable {} - """.trimIndent() - - locationTestInline(query) { rootPageNode, dokkaContext -> - val transformer = htmlTranslator(rootPageNode, dokkaContext) - val testClass = rootPageNode.firstChildOfType { it.name == "javadoc.test" } - .firstChildOfType() - assertEquals( - " implements Serializable, Cloneable", - transformer.htmlForContentNode(testClass.signature.supertypes!!, null) - ) - } - } - - @Test - fun `resolved signature to no argument function`() { - val query = """ - |/jvmSrc/javadoc/test/Test.kt - |package javadoc.test - |class Test { - | fun test() {} - |} - """.trimIndent() - - locationTestInline(query) { rootPageNode, dokkaContext -> - val transformer = htmlTranslator(rootPageNode, dokkaContext) - val testClassNode = rootPageNode.firstChildOfType { it.name == "javadoc.test" } - .firstChildOfType { it.name == "Test" } - val testFunctionNode = testClassNode.methods.first { it.name == "test" } - assertEquals( - """test()""", - transformer.htmlForContentNode( - testFunctionNode.signature.signatureWithoutModifiers, - testClassNode - ) - ) - } - } - - @Test - fun `resolved signature to one argument function`() { - val query = """ - |/jvmSrc/javadoc/test/Test.kt - |package javadoc.test - |class Test { - | fun test2(s: String) {} - |} - """.trimIndent() - - locationTestInline(query) { rootPageNode, dokkaContext -> - val transformer = htmlTranslator(rootPageNode, dokkaContext) - val testClassNode = rootPageNode.firstChildOfType { it.name == "javadoc.test" } - .firstChildOfType { it.name == "Test" } - val testFunctionNode = testClassNode.methods.first { it.name == "test2" } - assertEquals( - """test2(String s)""", - transformer.htmlForContentNode( - testFunctionNode.signature.signatureWithoutModifiers, - testClassNode - ) - ) - } - } - - @Test - fun `resolved signature to generic function`() { - val query = """ - |/jvmSrc/javadoc/test/Test.kt - |package javadoc.test - |class Test() { - | fun test3(a: A, t: T) {} - |} - """.trimIndent() - - locationTestInline(query) { rootPageNode, dokkaContext -> - val transformer = htmlTranslator(rootPageNode, dokkaContext) - val testClassNode = rootPageNode.firstChildOfType { it.name == "javadoc.test" } - .firstChildOfType { it.name == "Test" } - val testFunctionNode = testClassNode.methods.first { it.name == "test3" } - assertEquals( - """test3(A a, T t)""", - transformer.htmlForContentNode( - testFunctionNode.signature.signatureWithoutModifiers, - testClassNode - ) - ) - } - } - - @Test - fun `resolved package path`() { - val query = """ - |/jvmSrc/javadoc/test/Test.kt - |package javadoc.test - |class Test {} - """.trimIndent() - - locationTestInline(query) { rootPageNode, dokkaContext -> - val locationProvider = dokkaContext.plugin().querySingle { locationProviderFactory } - .getLocationProvider(rootPageNode) - val packageNode = rootPageNode.firstChildOfType { it.name == "javadoc.test" } - val packagePath = locationProvider.resolve(packageNode) - - assertEquals("javadoc/test/package-summary", packagePath) - } - } - - @Test - fun `resolve link from another package`(){ - val query = """ - |/jvmSrc/javadoc/test/Test.kt - |package javadoc.test - |class Test {} - | - |/jvmSrc/another/javadoc/example/Referenced.kt - |package javadoc.example.another - | - |/** - | * Referencing element from another package: [javadoc.test.Test] - | */ - |class Referenced {} - """.trimIndent() - - locationTestInline(query) { rootPageNode, dokkaContext -> - val transformer = htmlTranslator(rootPageNode, dokkaContext) - val testClassNode = rootPageNode.firstChildOfType { it.name == "javadoc.example.another" } - .firstChildOfType { it.name == "Referenced" } - assertEquals( - """

Referencing element from another package: javadoc.test.Test

""", - transformer.htmlForContentNode( - testClassNode.description.single(), - testClassNode - ) - ) - } - } - - @Test - fun `should resolve typealias function parameter`() { - val query = """ - |/jvmSrc/javadoc/test/FunctionParameters.kt - |package javadoc.test.functionparams - | - |typealias StringTypealias = String - | - |class FunctionParameters { - | fun withTypealias(typeAliasParam: StringTypealias) {} - |} - """.trimIndent() - - locationTestInline(query) { rootPageNode, dokkaContext -> - val transformer = htmlTranslator(rootPageNode, dokkaContext) - val methodWithTypealiasParam = rootPageNode.findFunctionNodeWithin( - packageName = "javadoc.test.functionparams", - className = "FunctionParameters", - methodName = "withTypealias" - ) - val methodSignatureHtml = transformer.htmlForContentNode(methodWithTypealiasParam.signature, null) - - val expectedSignatureHtml = "final Unit " + - "withTypealias" + - "(String typeAliasParam)" - - assertEquals(expectedSignatureHtml, methodSignatureHtml) - } - } - - @Test - fun `should resolve definitely non nullable function parameter`() { - val query = """ - |/jvmSrc/javadoc/test/FunctionParameters.kt - |package javadoc.test.functionparams - | - |class FunctionParameters { - | fun withDefinitelyNonNullableType(definitelyNonNullable: T & Any) {} - |} - """.trimIndent() - - locationTestInline(query) { rootPageNode, dokkaContext -> - val transformer = htmlTranslator(rootPageNode, dokkaContext) - val methodWithVoidParam = rootPageNode.findFunctionNodeWithin( - packageName = "javadoc.test.functionparams", - className = "FunctionParameters", - methodName = "withDefinitelyNonNullableType" - ) - val methodSignatureHtml = transformer.htmlForContentNode(methodWithVoidParam.signature, null) - - val expectedSignatureHtml = "final <T extends Any> " + - "Unit " + - "withDefinitelyNonNullableType" + - "(T definitelyNonNullable)" - - assertEquals(expectedSignatureHtml, methodSignatureHtml) - } - } - - private fun RootPageNode.findFunctionNodeWithin( - packageName: String, - className: String, - methodName: String - ): JavadocFunctionNode { - return this - .firstChildOfType { it.name == packageName } - .firstChildOfType { it.name == className } - .methods.single { it.name == methodName } - } - - private fun locationTestInline(query: String, testHandler: (RootPageNode, DokkaContext) -> Unit) { - val config = dokkaConfiguration { - format = "javadoc" - sourceSets { - sourceSet { - sourceRoots = listOf("jvmSrc/") - externalDocumentationLinks = listOf( - DokkaConfiguration.ExternalDocumentationLink.jdk(8), - DokkaConfiguration.ExternalDocumentationLink.kotlinStdlib() - ) - analysisPlatform = "jvm" - classpath = listOfNotNull(jvmStdlibPath) - } - } - } - testInline( - query = query, - configuration = config, - cleanupOutput = false, - pluginOverrides = listOf(JavadocPlugin()) - ) { renderingStage = testHandler } - } - - private fun htmlTranslator(rootPageNode: RootPageNode, dokkaContext: DokkaContext): JavadocContentToHtmlTranslator { - val locationProvider = dokkaContext.plugin().querySingle { locationProviderFactory } - .getLocationProvider(rootPageNode) as JavadocLocationProvider - return htmlTranslator(dokkaContext, locationProvider) - } - - private fun htmlTranslator( - dokkaContext: DokkaContext, - locationProvider: JavadocLocationProvider - ) = JavadocContentToHtmlTranslator(locationProvider, dokkaContext) -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/packagelist/JavadocPackageListTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/packagelist/JavadocPackageListTest.kt deleted file mode 100644 index 25883836..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/packagelist/JavadocPackageListTest.kt +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc.packagelist - -import org.jetbrains.dokka.javadoc.AbstractJavadocTemplateMapTest -import utils.TestOutputWriterPlugin -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class JavadocPackageListTest : AbstractJavadocTemplateMapTest() { - @Test - fun `package list should be generated for a flat structure`(){ - val writerPlugin = TestOutputWriterPlugin() - dualTestTemplateMapInline( - java = """ - /src/package0/ClassA.java - package package0 - public class ClassA { - - } - - /src/package1/ClassB.java - package package1 - public class ClassB { - } - """, - pluginsOverride = listOf(writerPlugin) - ){ - val contents = writerPlugin.writer.contents - val expected = """ - ${'$'}dokka.format:javadoc-v1 - ${'$'}dokka.linkExtension:html - - package0 - package1 - """.trimIndent() - assertEquals(expected, contents["element-list"]?.trimIndent()) - assertEquals(expected, contents["package-list"]?.trimIndent()) - } - } - - @Test - fun `package list should be generated for nested structure`(){ - val writerPlugin = TestOutputWriterPlugin() - dualTestTemplateMapInline( - java = """ - /src/package0/ClassA.java - package package0 - public class ClassA { - - } - - /src/package0/package0Inner/ClassB.java - package package0.package0Inner - public class ClassB { - } - - /src/package1/package1Inner/package1InnerInner/ClassC.java - package package1.package1Inner.package1InnerInner - public class ClassC { - } - """, - pluginsOverride = listOf(writerPlugin) - ){ - val contents = writerPlugin.writer.contents - val expected = """ - ${'$'}dokka.format:javadoc-v1 - ${'$'}dokka.linkExtension:html - - package0 - package0.package0Inner - package1.package1Inner.package1InnerInner - """.trimIndent() - assertEquals(expected, contents["element-list"]?.trimIndent()) - assertEquals(expected, contents["package-list"]?.trimIndent()) - } - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/search/JavadocIndexSearchTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/search/JavadocIndexSearchTest.kt deleted file mode 100644 index 074b3487..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/search/JavadocIndexSearchTest.kt +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc.search - -import org.jetbrains.dokka.javadoc.AbstractJavadocTemplateMapTest -import utils.TestOutputWriterPlugin -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class JavadocIndexSearchTest : AbstractJavadocTemplateMapTest() { - @Test - fun `javadoc index search tag`(){ - val writerPlugin = TestOutputWriterPlugin() - dualTestTemplateMapInline( - java = """ - /src/ClassA.java - package package0; - /** - * Documentation for ClassA - * Defines the implementation of the system Java compiler and its command line equivalent, {@index javac}, as well as javah. - */ - public class ClassA { - - } - """, - pluginsOverride = listOf(writerPlugin) - ) { - val contents = writerPlugin.writer.contents - val expectedSearchTagJson = """var tagSearchIndex = [{"p":"package0","c":"ClassA","l":"javac","url":"package0/ClassA.html#javac"}]""" - assertEquals(expectedSearchTagJson, contents["tag-search-index.js"]) - } - } - - @Test - fun `javadoc type with member search`(){ - val writerPlugin = TestOutputWriterPlugin() - dualTestTemplateMapInline( - java = """ - /src/ClassA.java - package package0; - public class ClassA { - public String propertyOfClassA = "Sample"; - - public void sampleFunction(){ - - } - } - """, - pluginsOverride = listOf(writerPlugin) - ) { - val contents = writerPlugin.writer.contents - val expectedPackageJson = - """var packageSearchIndex = [{"l":"package0","url":"package0/package-summary.html"}, {"l":"All packages","url":"index.html"}]""" - val expectedClassesJson = - """var typeSearchIndex = [{"p":"package0","l":"ClassA","url":"package0/ClassA.html"}, {"l":"All classes","url":"allclasses.html"}]""" - val expectedMembersJson = - """var memberSearchIndex = [{"p":"package0","c":"ClassA","l":"ClassA()","url":"package0/ClassA.html#ClassA()"}, {"p":"package0","c":"ClassA","l":"sampleFunction()","url":"package0/ClassA.html#sampleFunction()"}, {"p":"package0","c":"ClassA","l":"propertyOfClassA","url":"package0/ClassA.html#propertyOfClassA"}]""" - - assertEquals(expectedPackageJson, contents["package-search-index.js"]) - assertEquals(expectedClassesJson, contents["type-search-index.js"]) - assertEquals(expectedMembersJson, contents["member-search-index.js"]) - } - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilterTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilterTest.kt deleted file mode 100644 index 39dac05d..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/transformers/documentables/JavadocDocumentableJVMSourceSetFilterTest.kt +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc.transformers.documentables - -import org.jetbrains.dokka.DokkaSourceSetID -import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest -import kotlin.test.Test -import kotlin.test.assertEquals - -class JavadocDocumentableJVMSourceSetFilterTest: BaseAbstractTest() { - - private val config = dokkaConfiguration { - format = "javadoc" - sourceSets { - sourceSet { - sourceRoots = listOf("jvmSrc/") - analysisPlatform = "jvm" - name = "jvm" - dependentSourceSets = setOf(DokkaSourceSetID("root", "common")) - } - sourceSet { - sourceRoots = listOf("jsSrc/") - analysisPlatform = "js" - name = "js" - } - sourceSet { - sourceRoots = listOf("commonSrc/") - analysisPlatform = "common" - name = "common" - } - sourceSet { - sourceRoots = listOf("otherCommonSrc/") - analysisPlatform = "common" - name = "otherCommon" - } - } - } - private val query = """ - /jvmSrc/source0.kt - package package0 - /** - * Documentation for ClassA - */ - class ClassA { - fun a() {} - fun b() {} - fun c() {} - } - - /jsSrc/source1.kt - package package1 - /** - * Documentation for ClassB - */ - class ClassB { - fun d() {} - fun e() {} - fun f() {} - } - - /commonSrc/source2.kt - package package1 - /** - * Documentation for ClassC - */ - class ClassC { - fun g() {} - fun h() {} - fun j() {} - } - - /otherCommonSrc/source3.kt - package package1 - /** - * Documentation for ClassD - */ - class ClassD { - fun l() {} - fun m() {} - fun n() {} - } - """.trimIndent() - - @Test - fun `non-jvm and not dependent common source sets are ommited`() { - testInline(query, config) { - preMergeDocumentablesTransformationStage = { modules -> - assertEquals(2, modules.size) - } - } - } -} diff --git a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/validity/MultiplatformConfiguredCheckerTest.kt b/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/validity/MultiplatformConfiguredCheckerTest.kt deleted file mode 100644 index cea32026..00000000 --- a/plugins/javadoc/src/test/kotlin/org/jetbrains/dokka/javadoc/validity/MultiplatformConfiguredCheckerTest.kt +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.javadoc.validity - -import org.jetbrains.dokka.DokkaConfigurationImpl -import org.jetbrains.dokka.DokkaException -import org.jetbrains.dokka.ExternalDocumentationLink -import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest -import kotlin.test.Test -import kotlin.test.assertFalse -import kotlin.test.assertTrue - -class MultiplatformConfiguredCheckerTest : BaseAbstractTest() { - - val mppConfig: DokkaConfigurationImpl = dokkaConfiguration { - format = "javadoc" - sourceSets { - sourceSet { - sourceRoots = listOf("src/jvm") - analysisPlatform = "jvm" - externalDocumentationLinks = listOf( - ExternalDocumentationLink("https://docs.oracle.com/javase/8/docs/api/"), - ExternalDocumentationLink("https://kotlinlang.org/api/latest/jvm/stdlib/") - ) - } - sourceSet { - sourceRoots = listOf("src/js") - analysisPlatform = "js" - externalDocumentationLinks = listOf( - ExternalDocumentationLink("https://docs.oracle.com/javase/8/docs/api/"), - ExternalDocumentationLink("https://kotlinlang.org/api/latest/jvm/stdlib/") - ) - } - } - } - - val sppConfig: DokkaConfigurationImpl = dokkaConfiguration { - format = "javadoc" - sourceSets { - sourceSet { - sourceRoots = listOf("src") - analysisPlatform = "jvm" - externalDocumentationLinks = listOf( - ExternalDocumentationLink("https://docs.oracle.com/javase/8/docs/api/"), - ExternalDocumentationLink("https://kotlinlang.org/api/latest/jvm/stdlib/") - ) - } - } - } - - @Test - fun `mpp config should fail for javadoc`() { - testInline( - """ - |/src/jvm/kotlin/example/Test.kt - |class Test - |/src/js/kotlin/example/Test.kt - |class Test - """.trimMargin(), mppConfig - ) { - verificationStage = { verification -> - var mppDetected = false - try { - verification() - } catch (e: DokkaException) { - mppDetected = - e.localizedMessage == "Pre-generation validity check failed: ${MultiplatformConfiguredChecker.errorMessage}" - } - assertTrue(mppDetected, "MPP configuration not detected") - } - } - } - - @Test - fun `spp config should not fail for javadoc`() { - testInline( - """ - |/src/main/kotlin/example/Test.kt - |class Test - """.trimMargin(), sppConfig - ) { - verificationStage = { verification -> - var mppDetected = false - try { - verification() - } catch (e: DokkaException) { - mppDetected = - e.localizedMessage == "Pre-generation validity check failed: ${MultiplatformConfiguredChecker.errorMessage}" - } - assertFalse(mppDetected, "SPP taken as multiplatform") - } - } - } -} -- cgit