From 2ab810271d2b2dba7448a8cb2b53f0031e6ef40e Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Fri, 3 Jul 2020 16:52:56 +0200 Subject: Add tests for signatures rendering --- .../kotlin/signatures/DivergentSignatureTest.kt | 122 +++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt (limited to 'plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt') diff --git a/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt b/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt new file mode 100644 index 00000000..6ed17110 --- /dev/null +++ b/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt @@ -0,0 +1,122 @@ +package signatures + +import org.jetbrains.dokka.testApi.testRunner.AbstractCoreTest +import org.jsoup.Jsoup +import org.junit.jupiter.api.Test +import utils.* +import java.nio.file.Paths + +class DivergentSignatureTest : AbstractCoreTest() { + + @Test + fun `three divergent signatures for class`() { + + 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("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map { + Paths.get("$testDataDir/$it/kotlin").toString() + } + sourceSetID = "jvm" + } + } + } + + val writerPlugin = TestOutputWriterPlugin() + + testFromData( + configuration, + 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 + ) + } + } + } + + @Test + fun `three divergent signatures for class`() { + + 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("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map { + Paths.get("$testDataDir/$it/kotlin").toString() + } + sourceSetID = "jvm" + } + } + } + + val writerPlugin = TestOutputWriterPlugin() + + testFromData( + configuration, + 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 + ) + } + } + } +} \ No newline at end of file -- cgit From 36c4d0d3f815539517ce422e2192d9a5d2970b78 Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Tue, 7 Jul 2020 12:27:56 +0200 Subject: Add rendering signatures tests --- plugins/base/src/test/kotlin/markdown/LinkTest.kt | 1 + plugins/base/src/test/kotlin/model/PackagesTest.kt | 10 ++- .../kotlin/signatures/DivergentSignatureTest.kt | 96 ++++++++++++++++------ .../basicMultiplatformTest/jsMain/kotlin/Clock.kt | 7 ++ .../jvmMain/kotlin/example/Clock.kt | 4 + 5 files changed, 91 insertions(+), 27 deletions(-) (limited to 'plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt') 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()) { 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") } -- cgit From c80b6627ca7345727fce57f6ada084b53bab84fe Mon Sep 17 00:00:00 2001 From: Andrzej Ratajczak Date: Wed, 8 Jul 2020 13:02:26 +0200 Subject: Fixes after rebase --- plugins/base/src/test/kotlin/model/PackagesTest.kt | 4 +- .../kotlin/signatures/DivergentSignatureTest.kt | 65 ++++++++++++---------- .../src/test/kotlin/signatures/SignatureTest.kt | 44 +++++++-------- 3 files changed, 61 insertions(+), 52 deletions(-) (limited to 'plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt') diff --git a/plugins/base/src/test/kotlin/model/PackagesTest.kt b/plugins/base/src/test/kotlin/model/PackagesTest.kt index 4fc4d785..86222d95 100644 --- a/plugins/base/src/test/kotlin/model/PackagesTest.kt +++ b/plugins/base/src/test/kotlin/model/PackagesTest.kt @@ -14,8 +14,8 @@ class PackagesTest : AbstractModelTest("/src/main/kotlin/packages/Test.kt", "pac """.trimIndent(), prependPackage = false, configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin") displayName = "JVM" } diff --git a/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt b/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt index 67a43725..7635ab05 100644 --- a/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt +++ b/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt @@ -5,8 +5,8 @@ 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 +import utils.TestOutputWriterPlugin class DivergentSignatureTest : AbstractCoreTest() { @@ -16,30 +16,33 @@ class DivergentSignatureTest : AbstractCoreTest() { val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath() val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { moduleName = "example" + displayName = "js" + name = "js" analysisPlatform = "js" sourceRoots = listOf("jsMain", "commonMain", "jvmAndJsSecondCommonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "js" } - pass { + sourceSet { moduleName = "example" + displayName = "jvm" + name = "jvm" analysisPlatform = "jvm" sourceRoots = listOf("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "jvm" } - pass { + sourceSet { moduleName = "example" + displayName = "common" + name = "common" analysisPlatform = "common" sourceRoots = listOf("commonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "common" } } } @@ -54,7 +57,7 @@ class DivergentSignatureTest : AbstractCoreTest() { 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 == "") + assert(content.select("[data-filterable-current=example/js example/jvm example/common]").single().brief == "") } } } @@ -65,30 +68,33 @@ class DivergentSignatureTest : AbstractCoreTest() { val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath() val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { moduleName = "example" + displayName = "js" + name = "js" analysisPlatform = "js" sourceRoots = listOf("jsMain", "commonMain", "jvmAndJsSecondCommonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "js" } - pass { + sourceSet { moduleName = "example" + displayName = "jvm" + name = "jvm" analysisPlatform = "jvm" sourceRoots = listOf("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "jvm" } - pass { + sourceSet { moduleName = "example" + displayName = "common" + name = "common" analysisPlatform = "common" sourceRoots = listOf("commonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "common" } } } @@ -102,8 +108,8 @@ class DivergentSignatureTest : AbstractCoreTest() { 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" ) + assert(content.select("[data-filterable-current=example/jvm example/common]").single().brief == "Time in minis") + assert(content.select("[data-filterable-current=example/js]").single().brief == "JS implementation of getTimeInMillis js" ) } } } @@ -114,30 +120,33 @@ class DivergentSignatureTest : AbstractCoreTest() { val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath() val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { moduleName = "example" + displayName = "js" + name = "js" analysisPlatform = "js" sourceRoots = listOf("jsMain", "commonMain", "jvmAndJsSecondCommonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "js" } - pass { + sourceSet { moduleName = "example" + displayName = "jvm" + name = "jvm" analysisPlatform = "jvm" sourceRoots = listOf("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "jvm" } - pass { + sourceSet { moduleName = "example" + displayName = "common" + name = "common" analysisPlatform = "common" sourceRoots = listOf("commonMain").map { Paths.get("$testDataDir/$it/kotlin").toString() } - sourceSetID = "common" } } } @@ -151,9 +160,9 @@ class DivergentSignatureTest : AbstractCoreTest() { renderingStage = { _, _ -> 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") + assert(content.select("[data-filterable-current=example/jvm]").single().brief == "JVM custom kdoc jvm") + assert(content.select("[data-filterable-current=example/js]").single().brief == "JS custom kdoc js") + assert(content.select("[data-filterable-current=example/common]").single().brief == "common") } } } diff --git a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt index fbdebfa2..9f2ae435 100644 --- a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt +++ b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt @@ -19,8 +19,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -46,8 +46,8 @@ class SignatureTest : AbstractCoreTest() { fun `open fun`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -73,8 +73,8 @@ class SignatureTest : AbstractCoreTest() { fun `open suspend fun`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -100,8 +100,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun with params`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -129,8 +129,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun with function param`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -157,8 +157,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun with generic param`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -185,8 +185,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun with generic bounded param`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -213,8 +213,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun with keywords, params and generic bound`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -242,8 +242,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun with annotation`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -283,8 +283,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun with two annotations`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } @@ -331,8 +331,8 @@ class SignatureTest : AbstractCoreTest() { fun `fun with annotation with array`() { val configuration = dokkaConfiguration { - passes { - pass { + sourceSets { + sourceSet { sourceRoots = listOf("src/main/kotlin/test/Test.kt") } } -- cgit