From a39c7a161282d132d08bcf89eed0213374a574e9 Mon Sep 17 00:00:00 2001
From: Dmitry Jemerov <yole@jetbrains.com>
Date: Thu, 23 Feb 2017 15:21:03 +0100
Subject: Allow specifying implicit platforms for each source root

---
 core/src/test/kotlin/TestAPI.kt                   | 35 ++++++++++++++++-------
 core/src/test/kotlin/format/MarkdownFormatTest.kt | 15 +++++++---
 2 files changed, 35 insertions(+), 15 deletions(-)

(limited to 'core/src/test/kotlin')

diff --git a/core/src/test/kotlin/TestAPI.kt b/core/src/test/kotlin/TestAPI.kt
index 61eab562..b3085008 100644
--- a/core/src/test/kotlin/TestAPI.kt
+++ b/core/src/test/kotlin/TestAPI.kt
@@ -22,6 +22,22 @@ fun verifyModel(vararg roots: ContentRoot,
                 format: String = "html",
                 includeNonPublic: Boolean = true,
                 verifier: (DocumentationModule) -> Unit) {
+    val documentation = DocumentationModule("test")
+    appendDocumentation(documentation, *roots,
+            withJdk = withJdk,
+            withKotlinRuntime = withKotlinRuntime,
+            format = format,
+            includeNonPublic = includeNonPublic)
+    verifier(documentation)
+}
+
+fun appendDocumentation(documentation: DocumentationModule,
+                        vararg roots: ContentRoot,
+                        withJdk: Boolean = false,
+                        withKotlinRuntime: Boolean = false,
+                        format: String = "html",
+                        includeNonPublic: Boolean = true,
+                        implicitPlatforms: List<String> = emptyList()) {
     val messageCollector = object : MessageCollector {
         override fun clear() {
 
@@ -65,10 +81,8 @@ fun verifyModel(vararg roots: ContentRoot,
             skipEmptyPackages = false,
             sourceLinks = listOf<SourceLinkDefinition>(),
             generateIndexPages = false)
-    val injector = Guice.createInjector(DokkaAnalysisModule(environment, options, DokkaConsoleLogger))
-    val documentation = DocumentationModule("test")
+    val injector = Guice.createInjector(DokkaAnalysisModule(environment, options, implicitPlatforms, DokkaConsoleLogger))
     buildDocumentationModule(injector, documentation)
-    verifier(documentation)
     Disposer.dispose(environment)
 }
 
@@ -129,19 +143,18 @@ fun verifyOutput(roots: Array<ContentRoot>,
                  format: String = "html",
                  outputGenerator: (DocumentationModule, StringBuilder) -> Unit) {
     verifyModel(*roots, withJdk = withJdk, withKotlinRuntime = withKotlinRuntime, format = format) {
-        verifyModelOutput(it, outputExtension, outputGenerator, roots.first().path)
+        verifyModelOutput(it, outputExtension, roots.first().path, outputGenerator)
     }
 }
 
-private fun verifyModelOutput(it: DocumentationModule,
-                              outputExtension: String,
-                              outputGenerator: (DocumentationModule, StringBuilder) -> Unit,
-                              sourcePath: String) {
+fun verifyModelOutput(it: DocumentationModule,
+                      outputExtension: String,
+                      sourcePath: String,
+                      outputGenerator: (DocumentationModule, StringBuilder) -> Unit) {
     val output = StringBuilder()
     outputGenerator(it, output)
     val ext = outputExtension.removePrefix(".")
-    val path = sourcePath
-    val expectedFileContent = File(path.replaceAfterLast(".", ext, path + "." + ext)).readText()
+    val expectedFileContent = File(sourcePath.replaceAfterLast(".", ext, sourcePath + "." + ext)).readText()
     val expectedOutput =
             if (ext.equals("html", true))
                 expectedFileContent.lines().joinToString(separator = "\n", transform = String::trim)
@@ -164,7 +177,7 @@ fun verifyJavaOutput(path: String,
                      withKotlinRuntime: Boolean = false,
                      outputGenerator: (DocumentationModule, StringBuilder) -> Unit) {
     verifyJavaModel(path, withKotlinRuntime) { model ->
-        verifyModelOutput(model, outputExtension, outputGenerator, path)
+        verifyModelOutput(model, outputExtension, path, outputGenerator)
     }
 }
 
diff --git a/core/src/test/kotlin/format/MarkdownFormatTest.kt b/core/src/test/kotlin/format/MarkdownFormatTest.kt
index 4dd01a20..967bc5e4 100644
--- a/core/src/test/kotlin/format/MarkdownFormatTest.kt
+++ b/core/src/test/kotlin/format/MarkdownFormatTest.kt
@@ -1,9 +1,6 @@
 package org.jetbrains.dokka.tests
 
-import org.jetbrains.dokka.DocumentationModule
-import org.jetbrains.dokka.DocumentationNode
-import org.jetbrains.dokka.KotlinLanguageService
-import org.jetbrains.dokka.MarkdownFormatService
+import org.jetbrains.dokka.*
 import org.junit.Test
 
 class MarkdownFormatTest {
@@ -245,6 +242,16 @@ class MarkdownFormatTest {
         verifyMarkdownPackage("sinceKotlin")
     }
 
+    @Test fun multiplePlatforms() {
+        val module = DocumentationModule("test")
+        val sourcePath = "testdata/format/multiplatform/foo.kt"
+        appendDocumentation(module, contentRootFromPath(sourcePath), implicitPlatforms = listOf("JVM"))
+        appendDocumentation(module, contentRootFromPath("testdata/format/multiplatform/bar.kt"), implicitPlatforms = listOf("JS"))
+        verifyModelOutput(module, ".package.md", sourcePath) { model, output ->
+            markdownService.createOutputBuilder(output, tempLocation).appendNodes(model.members)
+        }
+    }
+
     private fun verifyMarkdownPackage(fileName: String, withKotlinRuntime: Boolean = false) {
         verifyOutput("testdata/format/$fileName.kt", ".package.md", withKotlinRuntime = withKotlinRuntime) { model, output ->
             markdownService.createOutputBuilder(output, tempLocation).appendNodes(model.members)
-- 
cgit