aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt')
-rw-r--r--plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt175
1 files changed, 175 insertions, 0 deletions
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..7635ab05
--- /dev/null
+++ b/plugins/base/src/test/kotlin/signatures/DivergentSignatureTest.kt
@@ -0,0 +1,175 @@
+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 java.nio.file.Paths
+import utils.TestOutputWriterPlugin
+
+class DivergentSignatureTest : AbstractCoreTest() {
+
+ @Test
+ fun `group { common + jvm + js }`() {
+
+ val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath()
+
+ val configuration = dokkaConfiguration {
+ sourceSets {
+ sourceSet {
+ moduleName = "example"
+ displayName = "js"
+ name = "js"
+ analysisPlatform = "js"
+ sourceRoots = listOf("jsMain", "commonMain", "jvmAndJsSecondCommonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ sourceSet {
+ moduleName = "example"
+ displayName = "jvm"
+ name = "jvm"
+ analysisPlatform = "jvm"
+ sourceRoots = listOf("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ sourceSet {
+ moduleName = "example"
+ displayName = "common"
+ name = "common"
+ analysisPlatform = "common"
+ sourceRoots = listOf("commonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ }
+ }
+
+ val writerPlugin = TestOutputWriterPlugin()
+
+ testFromData(
+ configuration,
+ pluginOverrides = listOf(writerPlugin)
+ ) {
+ renderingStage = { _, _ ->
+ val content = writerPlugin.renderedContent("example/example/-clock/get-time.html")
+
+ assert(content.count() == 1)
+ assert(content.select("[data-filterable-current=example/js example/jvm example/common]").single().brief == "")
+ }
+ }
+ }
+
+ @Test
+ fun `group { common + jvm }, group { js }`() {
+
+ val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath()
+
+ val configuration = dokkaConfiguration {
+ sourceSets {
+ sourceSet {
+ moduleName = "example"
+ displayName = "js"
+ name = "js"
+ analysisPlatform = "js"
+ sourceRoots = listOf("jsMain", "commonMain", "jvmAndJsSecondCommonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ sourceSet {
+ moduleName = "example"
+ displayName = "jvm"
+ name = "jvm"
+ analysisPlatform = "jvm"
+ sourceRoots = listOf("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ sourceSet {
+ moduleName = "example"
+ displayName = "common"
+ name = "common"
+ analysisPlatform = "common"
+ sourceRoots = listOf("commonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ }
+ }
+
+ 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=example/jvm example/common]").single().brief == "Time in minis")
+ assert(content.select("[data-filterable-current=example/js]").single().brief == "JS implementation of getTimeInMillis js" )
+ }
+ }
+ }
+
+ @Test
+ fun `group { js }, group { jvm }, group { js }`() {
+
+ val testDataDir = getTestDataDir("multiplatform/basicMultiplatformTest").toAbsolutePath()
+
+ val configuration = dokkaConfiguration {
+ sourceSets {
+ sourceSet {
+ moduleName = "example"
+ displayName = "js"
+ name = "js"
+ analysisPlatform = "js"
+ sourceRoots = listOf("jsMain", "commonMain", "jvmAndJsSecondCommonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ sourceSet {
+ moduleName = "example"
+ displayName = "jvm"
+ name = "jvm"
+ analysisPlatform = "jvm"
+ sourceRoots = listOf("jvmMain", "commonMain", "jvmAndJsSecondCommonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ sourceSet {
+ moduleName = "example"
+ displayName = "common"
+ name = "common"
+ analysisPlatform = "common"
+ sourceRoots = listOf("commonMain").map {
+ Paths.get("$testDataDir/$it/kotlin").toString()
+ }
+ }
+ }
+ }
+
+ val writerPlugin = TestOutputWriterPlugin()
+
+ testFromData(
+ configuration,
+ pluginOverrides = listOf(writerPlugin)
+ ) {
+ renderingStage = { _, _ ->
+ val content = writerPlugin.renderedContent("example/example/-clock/get-year.html")
+ assert(content.count() == 3)
+ 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")
+ }
+ }
+ }
+
+ 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