diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | core/src/test/kotlin/format/DacAsJavaFormatTest.kt | 75 | ||||
-rw-r--r-- | core/testdata/format/dac-as-java/javaSeeTag.html | 68 |
3 files changed, 114 insertions, 31 deletions
diff --git a/.gitignore b/.gitignore index 7aae4ae5c..8227df3c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +# mac +.DS_Store doc ### Maven template diff --git a/core/src/test/kotlin/format/DacAsJavaFormatTest.kt b/core/src/test/kotlin/format/DacAsJavaFormatTest.kt index 8fc94786e..a369e653f 100644 --- a/core/src/test/kotlin/format/DacAsJavaFormatTest.kt +++ b/core/src/test/kotlin/format/DacAsJavaFormatTest.kt @@ -1,13 +1,67 @@ package org.jetbrains.dokka.tests.format +import com.google.inject.Guice.createInjector +import com.google.inject.Injector +import com.google.inject.Module +import com.google.inject.name.Names import org.jetbrains.dokka.* -import org.jetbrains.dokka.tests.FileGeneratorTestCase +import org.jetbrains.dokka.Formats.DacAsJavaFormatDescriptor +import org.jetbrains.dokka.Formats.JavaLayoutHtmlFormatGenerator +import org.jetbrains.dokka.Utilities.bind import org.jetbrains.dokka.tests.verifyJavaOutput -import org.jetbrains.dokka.tests.verifyOutput +import org.junit.Rule import org.junit.Test +import org.junit.rules.TemporaryFolder +import java.io.File +import java.net.URI -class DacAsJavaFormatTest: FileGeneratorTestCase() { - override val formatService = HtmlFormatService(fileGenerator, KotlinLanguageService(), HtmlTemplateService.default(), listOf()) +class DacAsJavaFormatTest { + val formatDescriptor = DacAsJavaFormatDescriptor() + + @get:Rule + var folder = TemporaryFolder() + + var options = + DocumentationOptions( + folder.toString(), + "dac-as-java", + apiVersion = null, + languageVersion = null, + generateClassIndexPage = false, + generatePackageIndexPage = false, + noStdlibLink = false, + noJdkLink = false, + collectInheritedExtensionsFromLibraries = true + ) + + val injector: Injector by lazy { + createInjector(Module { binder -> + + binder.bind<Boolean>().annotatedWith(Names.named("generateClassIndex")).toInstance(false) + binder.bind<Boolean>().annotatedWith(Names.named("generatePackageIndex")).toInstance(false) + + binder.bind<String>().annotatedWith(Names.named("dacRoot")).toInstance("") + binder.bind<String>().annotatedWith(Names.named("outlineRoot")).toInstance("") + binder.bind<File>().annotatedWith(Names.named("outputDir")).toInstance(folder.root) + + binder.bind<DocumentationOptions>().toProvider { options } + binder.bind<DokkaLogger>().toInstance(object : DokkaLogger { + override fun info(message: String) { + println(message) + } + + override fun warn(message: String) { + println("WARN: $message") + } + + override fun error(message: String) { + println("ERROR: $message") + } + }) + + formatDescriptor.configureOutput(binder) + }) + } @Test fun javaSeeTag() { verifyJavaHtmlNode("javaSeeTag") @@ -23,7 +77,18 @@ class DacAsJavaFormatTest: FileGeneratorTestCase() { nodeFilter: (DocumentationModule) -> List<DocumentationNode> ) { verifyJavaOutput("testdata/format/dac-as-java/$fileName.java",".html", format = format, withKotlinRuntime = withKotlinRuntime) { model, output -> - buildPagesAndReadInto(nodeFilter(model), output) + buildPagesAndReadInto(model, nodeFilter(model), output) } } + + protected fun buildPagesAndReadInto(model: DocumentationNode, nodes: List<DocumentationNode>, sb: StringBuilder) = + with(injector.getInstance(Generator::class.java)) { + this as JavaLayoutHtmlFormatGenerator + buildPages(listOf(model)) + val byLocations = nodes.groupBy { mainUri(it) } + val tmpFolder = folder.root.toURI().resolve(model.name+"/") + byLocations.forEach { (loc, _) -> + sb.append(tmpFolder.resolve(URI("/").relativize(loc)).toURL().readText()) + } + } }
\ No newline at end of file diff --git a/core/testdata/format/dac-as-java/javaSeeTag.html b/core/testdata/format/dac-as-java/javaSeeTag.html index 90670a318..f7378820f 100644 --- a/core/testdata/format/dac-as-java/javaSeeTag.html +++ b/core/testdata/format/dac-as-java/javaSeeTag.html @@ -1,26 +1,42 @@ -<HTML> -<HEAD> -<meta charset="UTF-8"> -<title>Foo - test</title> -</HEAD> -<BODY> -<a href="../index.html">test</a> / <a href="./index.html">Foo</a><br/> -<br/> -<h1>Foo</h1> -<code><span class="keyword">class </span><span class="identifier">Foo</span> <span class="symbol">:</span> <span class="identifier">java.lang.Object</span></code> -<p><strong>See Also</strong><br/> -<a href="bar.html">#bar</a></p> -<h3>Functions</h3> -<table> -<tbody> -<tr> -<td> -<p><a href="bar.html">bar</a></p> -</td> -<td> -<code><span class="keyword">fun </span><span class="identifier">bar</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">void</span></code></td> -</tr> -</tbody> -</table> -</BODY> -</HTML> +<html devsite="true"> + <head> + <title>Foo</title> +{% setvar book_path %}/_book.yaml{% endsetvar %} +{% include "_shared/_reference-head-tags.html" %} + </head> + <body> + <div id="api-info-block"></div> + <h1>Foo</h1> + <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre> + <table class="jd-inheritance-table"> + <tr> + <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td> + </tr> + </table> + <h2>Summary</h2> + <table class="responsive" id="pubmethods"> + <tbody> + <tr> + <th colSpan="2"> + <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class=""> + <h3 is-upgraded="">Public methods</h3> + </devsite-heading> + </th> + </tr> + <tr> + <td><span class="keyword">public</span> <span class="identifier">void</span></td> + <td> + <div><code><a href="#bar()">bar</a>()</code></div> + <p></p> + </td> + </tr> + </tbody> + </table> + <h2>Public methods</h2> +<a name="bar()"></a> + <div class="api apilevel-" data-version-added=""> + <h3 class="api-name">bar</h3> + <pre class="api-signature no-pretty-print"><span class="identifier">void</span> <span class="identifier">bar</span><span class="symbol">(</span><span class="symbol">)</span></pre> + </div> + </body> +</html> |