diff options
author | Andrzej Ratajczak <andrzej.ratajczak98@gmail.com> | 2020-07-07 12:27:56 +0200 |
---|---|---|
committer | Paweł Marks <Kordyjan@users.noreply.github.com> | 2020-07-09 14:09:26 +0200 |
commit | 36c4d0d3f815539517ce422e2192d9a5d2970b78 (patch) | |
tree | f02f4c7cf62b98926536e38f8d5db694cb35471a /plugins/base/src/test | |
parent | 2ab810271d2b2dba7448a8cb2b53f0031e6ef40e (diff) | |
download | dokka-36c4d0d3f815539517ce422e2192d9a5d2970b78.tar.gz dokka-36c4d0d3f815539517ce422e2192d9a5d2970b78.tar.bz2 dokka-36c4d0d3f815539517ce422e2192d9a5d2970b78.zip |
Add rendering signatures tests
Diffstat (limited to 'plugins/base/src/test')
5 files changed, 91 insertions, 27 deletions
diff --git a/plugins/base/src/test/kotlin/markdown/LinkTest.kt b/plugins/base/src/test/kotlin/markdown/LinkTest.kt index 8e4e588e..a6333c5a 100644 --- a/plugins/base/src/test/kotlin/markdown/LinkTest.kt +++ b/plugins/base/src/test/kotlin/markdown/LinkTest.kt @@ -49,6 +49,7 @@ class LinkTest : AbstractCoreTest() { sourceSets { sourceSet { sourceRoots = listOf("src/main/kotlin") + displayName = "JVM" } } } diff --git a/plugins/base/src/test/kotlin/model/PackagesTest.kt b/plugins/base/src/test/kotlin/model/PackagesTest.kt index c777ad05..4fc4d785 100644 --- a/plugins/base/src/test/kotlin/model/PackagesTest.kt +++ b/plugins/base/src/test/kotlin/model/PackagesTest.kt @@ -12,7 +12,15 @@ class PackagesTest : AbstractModelTest("/src/main/kotlin/packages/Test.kt", "pac """ | """.trimIndent(), - prependPackage = false + prependPackage = false, + configuration = dokkaConfiguration { + passes { + pass { + sourceRoots = listOf("src/main/kotlin") + displayName = "JVM" + } + } + } ) { with((this / "[JVM root]").cast<DPackage>()) { name equals "[JVM root]" diff --git a/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt b/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt index 6ed17110..67a43725 100644 --- a/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt +++ b/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt @@ -2,6 +2,8 @@ package signatures import org.jetbrains.dokka.testApi.testRunner.AbstractCoreTest import org.jsoup.Jsoup +import org.jsoup.nodes.Element +import org.jsoup.select.Elements import org.junit.jupiter.api.Test import utils.* import java.nio.file.Paths @@ -9,11 +11,10 @@ import java.nio.file.Paths class DivergentSignatureTest : AbstractCoreTest() { @Test - fun `three divergent signatures for class`() { + fun `group { common + jvm + js }`() { val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath() - val configuration = dokkaConfiguration { passes { pass { @@ -35,10 +36,10 @@ class DivergentSignatureTest : AbstractCoreTest() { pass { moduleName = "example" analysisPlatform = "common" - sourceRoots = listOf("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map { + sourceRoots = listOf("commonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "jvm" + sourceSetID = "common" } } } @@ -50,26 +51,19 @@ class DivergentSignatureTest : AbstractCoreTest() { pluginOverrides = listOf(writerPlugin) ) { renderingStage = { _, _ -> - assert(writerPlugin.writer.contents.getValue("example/example/-clock/index.html") - .let { Jsoup.parse(it) }.select("#content").single() - .select("div.sourceset-depenent-content") - .fold(0) { acc, elem -> - acc + if (elem.child(0).html().contains( - Regex("Documentation for (expected|actual) class Clock .*") - ) - ) 1 else 0 - } == 3 - ) + val content = writerPlugin.renderedContent("example/example/-clock/get-time.html") + + assert(content.count() == 1) + assert(content.select("[data-filterable-current=js jvm common]").single().brief == "") } } } @Test - fun `three divergent signatures for class`() { + fun `group { common + jvm }, group { js }`() { val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath() - val configuration = dokkaConfiguration { passes { pass { @@ -91,11 +85,60 @@ class DivergentSignatureTest : AbstractCoreTest() { pass { moduleName = "example" analysisPlatform = "common" + sourceRoots = listOf("commonMain").map { + Paths.get("$testDataDir/$it/kotlin").toString() + } + sourceSetID = "common" + } + } + } + + val writerPlugin = TestOutputWriterPlugin() + + testFromData( + configuration, + pluginOverrides = listOf(writerPlugin) + ) { + renderingStage = { _, _ -> + val content = writerPlugin.renderedContent("example/example/-clock/get-times-in-millis.html") + assert(content.count() == 2) + assert(content.select("[data-filterable-current=jvm common]").single().brief == "Time in minis") + assert(content.select("[data-filterable-current=js]").single().brief == "JS implementation of getTimeInMillis example/js" ) + } + } + } + + @Test + fun `group { js }, group { jvm }, group { js }`() { + + val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath() + + val configuration = dokkaConfiguration { + passes { + pass { + moduleName = "example" + analysisPlatform = "js" + sourceRoots = listOf("jsMain", "commonMain", "jvmAndJsSecondCommonMain").map { + Paths.get("$testDataDir/$it/kotlin").toString() + } + sourceSetID = "js" + } + pass { + moduleName = "example" + analysisPlatform = "jvm" sourceRoots = listOf("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } sourceSetID = "jvm" } + pass { + moduleName = "example" + analysisPlatform = "common" + sourceRoots = listOf("commonMain").map { + Paths.get("$testDataDir/$it/kotlin").toString() + } + sourceSetID = "common" + } } } @@ -106,17 +149,18 @@ class DivergentSignatureTest : AbstractCoreTest() { pluginOverrides = listOf(writerPlugin) ) { renderingStage = { _, _ -> - assert(writerPlugin.writer.contents.getValue("example/example/-clock/index.html") - .let { Jsoup.parse(it) }.select("#content").single() - .select("div.sourceset-depenent-content") - .fold(0) { acc, elem -> - acc + if (elem.child(0).html().contains( - Regex("Documentation for (expected|actual) class Clock .*") - ) - ) 1 else 0 - } == 3 - ) + val content = writerPlugin.renderedContent("example/example/-clock/get-year.html") + assert(content.count() == 3) + assert(content.select("[data-filterable-current=jvm]").single().brief == "JVM custom kdoc example/jvm") + assert(content.select("[data-filterable-current=js]").single().brief == "JS custom kdoc example/js") + assert(content.select("[data-filterable-current=common]").single().brief == "example/common") } } } + + private fun TestOutputWriterPlugin.renderedContent(path: String) = writer.contents.getValue(path) + .let { Jsoup.parse(it) }.select("#content").single().select("div.divergent-group") + + private val Element.brief: String + get() = children().select(".brief-with-platform-tags").text() }
\ No newline at end of file diff --git a/plugins/base/src/test/resources/multiplatform/basicMultiplatformTest/jsMain/kotlin/Clock.kt b/plugins/base/src/test/resources/multiplatform/basicMultiplatformTest/jsMain/kotlin/Clock.kt index 967cffcd..51b8fdc6 100644 --- a/plugins/base/src/test/resources/multiplatform/basicMultiplatformTest/jsMain/kotlin/Clock.kt +++ b/plugins/base/src/test/resources/multiplatform/basicMultiplatformTest/jsMain/kotlin/Clock.kt @@ -9,8 +9,15 @@ import kotlin.js.Date actual open class Clock { actual fun getTime() = Date.now().toString() fun onlyJsFunction(): Int = 42 + + /** + * JS implementation of getTimeInMillis + */ actual fun getTimesInMillis(): String = Date.now().toString() + /** + * JS custom kdoc + */ actual fun getYear(): String { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } diff --git a/plugins/base/src/test/resources/multiplatform/basicMultiplatformTest/jvmMain/kotlin/example/Clock.kt b/plugins/base/src/test/resources/multiplatform/basicMultiplatformTest/jvmMain/kotlin/example/Clock.kt index 4d27d0a3..fec06207 100644 --- a/plugins/base/src/test/resources/multiplatform/basicMultiplatformTest/jvmMain/kotlin/example/Clock.kt +++ b/plugins/base/src/test/resources/multiplatform/basicMultiplatformTest/jvmMain/kotlin/example/Clock.kt @@ -25,6 +25,10 @@ actual open class Clock { open fun getDayOfTheWeek(): String { TODO("not implemented") } + + /** + * JVM custom kdoc + */ actual fun getYear(): String { TODO("not implemented") } |