aboutsummaryrefslogtreecommitdiff
path: root/test/src/TestAPI.kt
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/TestAPI.kt')
-rw-r--r--test/src/TestAPI.kt45
1 files changed, 33 insertions, 12 deletions
diff --git a/test/src/TestAPI.kt b/test/src/TestAPI.kt
index ebee1290..171b5b9d 100644
--- a/test/src/TestAPI.kt
+++ b/test/src/TestAPI.kt
@@ -1,14 +1,20 @@
package org.jetbrains.dokka.tests
-import org.jetbrains.kotlin.cli.common.messages.*
-import com.intellij.openapi.util.*
-import kotlin.test.fail
-import org.jetbrains.dokka.*
-import java.io.File
import com.intellij.openapi.application.PathManager
+import com.intellij.openapi.util.Disposer
+import org.jetbrains.dokka.*
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
+import org.jetbrains.kotlin.cli.common.messages.MessageCollector
+import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot
+import org.jetbrains.kotlin.config.ContentRoot
+import org.jetbrains.kotlin.config.KotlinSourceRoot
+import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
import org.junit.Assert
+import java.io.File
+import kotlin.test.fail
-public fun verifyModel(vararg files: String, verifier: (DocumentationModule) -> Unit) {
+public fun verifyModel(vararg roots: ContentRoot, verifier: (DocumentationModule) -> Unit) {
val messageCollector = object : MessageCollector {
override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageLocation) {
when (severity) {
@@ -29,8 +35,7 @@ public fun verifyModel(vararg files: String, verifier: (DocumentationModule) ->
val environment = AnalysisEnvironment(messageCollector) {
val stringRoot = PathManager.getResourceRoot(javaClass<String>(), "/java/lang/String.class")
addClasspath(File(stringRoot))
- addSources(files.toList())
- addClasspath(files.map { File(it)}.filter { it.isDirectory()} )
+ addRoots(roots.toList())
}
val options = DocumentationOptions(includeNonPublic = true, skipEmptyPackages = false, sourceLinks = listOf<SourceLinkDefinition>())
val documentation = buildDocumentationModule(environment, "test", options, logger = DokkaConsoleLogger)
@@ -38,23 +43,32 @@ public fun verifyModel(vararg files: String, verifier: (DocumentationModule) ->
Disposer.dispose(environment)
}
-public fun verifyPackageMember(vararg files: String, verifier: (DocumentationNode) -> Unit) {
- verifyModel(*files) { model ->
+public fun verifyModel(source: String, verifier: (DocumentationModule) -> Unit) {
+ verifyModel(contentRootFromPath(source), verifier = verifier)
+}
+
+public fun verifyPackageMember(kotlinSource: String, verifier: (DocumentationNode) -> Unit) {
+ verifyModel(kotlinSource) { model ->
val pkg = model.members.single()
verifier(pkg.members.single())
}
}
-public fun verifyOutput(path: String, outputExtension: String, outputGenerator: (DocumentationModule, StringBuilder) -> Unit) {
- verifyModel(path) {
+public fun verifyOutput(roots: Array<ContentRoot>, outputExtension: String, outputGenerator: (DocumentationModule, StringBuilder) -> Unit) {
+ verifyModel(*roots) {
val output = StringBuilder()
outputGenerator(it, output)
val ext = outputExtension.trimLeading(".")
+ val path = roots.first().path
val expectedOutput = File(path.replaceAfterLast(".", ext, path + "." + ext)).readText()
assertEqualsIgnoringSeparators(expectedOutput, output.toString())
}
}
+public fun verifyOutput(path: String, outputExtension: String, outputGenerator: (DocumentationModule, StringBuilder) -> Unit) {
+ verifyOutput(arrayOf(contentRootFromPath(path)), outputExtension, outputGenerator)
+}
+
public fun assertEqualsIgnoringSeparators(expectedOutput: String, output: String) {
Assert.assertEquals(expectedOutput.replace("\r\n", "\n"), output.replace("\r\n", "\n"))
}
@@ -112,3 +126,10 @@ object InMemoryLocationService: LocationService {
}
val tempLocation = InMemoryLocation("")
+
+val ContentRoot.path: String
+ get() = when(this) {
+ is KotlinSourceRoot -> path
+ is JavaSourceRoot -> file.path
+ else -> throw UnsupportedOperationException()
+ }