blob: 65254bca4310a1cdba5788089e27c8180ec2ad5e [file] [log] [blame]
Ilya Ryzhenkov8a4dad42014-07-11 20:41:53 +04001package org.jetbrains.dokka.tests
Ilya Ryzhenkov044e1b82014-07-11 17:11:35 +04002
3import org.jetbrains.jet.cli.common.messages.*
4import com.intellij.openapi.util.*
Ilya Ryzhenkov044e1b82014-07-11 17:11:35 +04005import kotlin.test.fail
Ilya Ryzhenkov044308b2014-07-11 20:49:04 +04006import org.jetbrains.dokka.*
Ilya Ryzhenkov044e1b82014-07-11 17:11:35 +04007
Ilya Ryzhenkov73316ee2014-07-11 19:24:05 +04008public fun verifyModel(vararg files: String, verifier: (DocumentationModel) -> Unit) {
Ilya Ryzhenkov044e1b82014-07-11 17:11:35 +04009 val messageCollector = object : MessageCollector {
10 override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageLocation) {
11 when (severity) {
12 CompilerMessageSeverity.WARNING,
13 CompilerMessageSeverity.LOGGING,
14 CompilerMessageSeverity.OUTPUT,
15 CompilerMessageSeverity.INFO,
16 CompilerMessageSeverity.ERROR -> {
17 println("$severity: $message at $location")
18 }
19 CompilerMessageSeverity.EXCEPTION -> {
20 fail("$severity: $message at $location")
21 }
22 }
23 }
24 }
25
Ilya Ryzhenkov044308b2014-07-11 20:49:04 +040026 val environment = AnalysisEnvironment(messageCollector) {
Ilya Ryzhenkov044e1b82014-07-11 17:11:35 +040027 addSources(files.toList())
28 }
29
30 val result = environment.processFiles { context, file ->
31 context.createDocumentation(file)
32 }.fold(DocumentationModel()) {(aggregate, item) -> aggregate.merge(item) }
33 verifier(result)
34 Disposer.dispose(environment)
35}
36