From b536699655e40c62cd603e1f98869786566604bd Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Tue, 10 Sep 2019 15:15:09 +0200 Subject: WIP on restructuring --- core/src/test/kotlin/javadoc/JavadocTest.kt | 333 ---------------------------- 1 file changed, 333 deletions(-) delete mode 100644 core/src/test/kotlin/javadoc/JavadocTest.kt (limited to 'core/src/test') diff --git a/core/src/test/kotlin/javadoc/JavadocTest.kt b/core/src/test/kotlin/javadoc/JavadocTest.kt deleted file mode 100644 index 1c4dd258..00000000 --- a/core/src/test/kotlin/javadoc/JavadocTest.kt +++ /dev/null @@ -1,333 +0,0 @@ -package org.jetbrains.dokka.javadoc - -import com.sun.javadoc.Tag -import com.sun.javadoc.Type -import org.jetbrains.dokka.DokkaConsoleLogger -import org.jetbrains.dokka.Platform -import org.jetbrains.dokka.tests.ModelConfig -import org.jetbrains.dokka.tests.assertEqualsIgnoringSeparators -import org.jetbrains.dokka.tests.checkSourceExistsAndVerifyModel -import org.junit.Assert.* -import org.junit.Test -import java.lang.reflect.Modifier.* - -class JavadocTest { - val defaultModelConfig = ModelConfig(analysisPlatform = Platform.jvm) - - @Test fun testTypes() { - verifyJavadoc("testdata/javadoc/types.kt", ModelConfig(analysisPlatform = Platform.jvm, withJdk = true)) { doc -> - val classDoc = doc.classNamed("foo.TypesKt")!! - val method = classDoc.methods().find { it.name() == "foo" }!! - - val type = method.returnType() - assertFalse(type.asClassDoc().isIncluded) - assertEquals("java.lang.String", type.qualifiedTypeName()) - assertEquals("java.lang.String", type.asClassDoc().qualifiedName()) - - val params = method.parameters() - assertTrue(params[0].type().isPrimitive) - assertFalse(params[1].type().asClassDoc().isIncluded) - } - } - - @Test fun testObject() { - verifyJavadoc("testdata/javadoc/obj.kt", defaultModelConfig) { doc -> - val classDoc = doc.classNamed("foo.O") - assertNotNull(classDoc) - - val companionDoc = doc.classNamed("foo.O.Companion") - assertNotNull(companionDoc) - - val pkgDoc = doc.packageNamed("foo")!! - assertEquals(2, pkgDoc.allClasses().size) - } - } - - @Test fun testException() { - verifyJavadoc( - "testdata/javadoc/exception.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - val classDoc = doc.classNamed("foo.MyException")!! - val member = classDoc.methods().find { it.name() == "foo" } - assertEquals(classDoc, member!!.containingClass()) - } - } - - @Test fun testByteArray() { - verifyJavadoc( - "testdata/javadoc/bytearr.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - val classDoc = doc.classNamed("foo.ByteArray")!! - assertNotNull(classDoc.asClassDoc()) - - val member = classDoc.methods().find { it.name() == "foo" }!! - assertEquals("[]", member.returnType().dimension()) - } - } - - @Test fun testStringArray() { - verifyJavadoc( - "testdata/javadoc/stringarr.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - val classDoc = doc.classNamed("foo.Foo")!! - assertNotNull(classDoc.asClassDoc()) - - val member = classDoc.methods().find { it.name() == "main" }!! - val paramType = member.parameters()[0].type() - assertNull(paramType.asParameterizedType()) - assertEquals("String[]", paramType.typeName()) - assertEquals("String", paramType.asClassDoc().name()) - } - } - - @Test fun testJvmName() { - verifyJavadoc( - "testdata/javadoc/jvmname.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - val classDoc = doc.classNamed("foo.Apple")!! - assertNotNull(classDoc.asClassDoc()) - - val member = classDoc.methods().find { it.name() == "_tree" } - assertNotNull(member) - } - } - - @Test fun testLinkWithParam() { - verifyJavadoc( - "testdata/javadoc/paramlink.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - val classDoc = doc.classNamed("demo.Apple")!! - assertNotNull(classDoc.asClassDoc()) - val tags = classDoc.inlineTags().filterIsInstance() - assertEquals(2, tags.size) - val linkTag = tags[1] as SeeMethodTagAdapter - assertEquals("cutIntoPieces", linkTag.method.name()) - } - } - - @Test fun testInternalVisibility() { - verifyJavadoc( - "testdata/javadoc/internal.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true, includeNonPublic = false) - ) { doc -> - val classDoc = doc.classNamed("foo.Person")!! - val constructors = classDoc.constructors() - assertEquals(1, constructors.size) - assertEquals(1, constructors.single().parameters().size) - } - } - - @Test fun testSuppress() { - verifyJavadoc( - "testdata/javadoc/suppress.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - assertNull(doc.classNamed("Some")) - assertNull(doc.classNamed("SomeAgain")) - assertNull(doc.classNamed("Interface")) - val classSame = doc.classNamed("Same")!! - assertTrue(classSame.fields().isEmpty()) - assertTrue(classSame.methods().isEmpty()) - } - } - - @Test fun testTypeAliases() { - verifyJavadoc( - "testdata/javadoc/typealiases.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - assertNull(doc.classNamed("B")) - assertNull(doc.classNamed("D")) - - assertEquals("A", doc.classNamed("C")!!.superclass().name()) - val methodParamType = doc.classNamed("TypealiasesKt")!!.methods() - .find { it.name() == "some" }!!.parameters().first() - .type() - assertEquals("kotlin.jvm.functions.Function1", methodParamType.qualifiedTypeName()) - assertEquals("? super A, C", - methodParamType.asParameterizedType().typeArguments().joinToString(transform = Type::qualifiedTypeName) - ) - } - } - - @Test fun testKDocKeywordsOnMethod() { - verifyJavadoc( - "testdata/javadoc/kdocKeywordsOnMethod.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - val method = doc.classNamed("KdocKeywordsOnMethodKt")!!.methods()[0] - assertEquals("@return [ContentText(text=value of a)]", method.tags("return").first().text()) - assertEquals("@param a [ContentText(text=Some string)]", method.paramTags().first().text()) - assertEquals("@throws FireException [ContentText(text=in case of fire)]", method.throwsTags().first().text()) - } - } - - @Test - fun testBlankLineInsideCodeBlock() { - verifyJavadoc( - "testdata/javadoc/blankLineInsideCodeBlock.kt", - ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true) - ) { doc -> - val method = doc.classNamed("BlankLineInsideCodeBlockKt")!!.methods()[0] - val text = method.inlineTags().joinToString(separator = "", transform = Tag::text) - assertEqualsIgnoringSeparators(""" -

-                This is a test
-                    of Dokka's code blocks.
-                Here is a blank line.
-
-                The previous line was blank.
-                

- """.trimIndent(), text) - } - } - - @Test - fun testCompanionMethodReference() { - verifyJavadoc("testdata/javadoc/companionMethodReference.kt", defaultModelConfig) { doc -> - val classDoc = doc.classNamed("foo.TestClass")!! - val tag = classDoc.inlineTags().filterIsInstance().first() - assertEquals("TestClass.Companion", tag.referencedClassName()) - assertEquals("test", tag.referencedMemberName()) - } - } - - @Test - fun testVararg() { - verifyJavadoc("testdata/javadoc/vararg.kt") { doc -> - val classDoc = doc.classNamed("VarargKt")!! - val methods = classDoc.methods() - methods.single { it.name() == "vararg" }.let { method -> - assertTrue(method.isVarArgs) - assertEquals("int", method.parameters().last().typeName()) - } - methods.single { it.name() == "varargInMiddle" }.let { method -> - assertFalse(method.isVarArgs) - assertEquals("int[]", method.parameters()[1].typeName()) - } - } - } - - @Test - fun shouldHaveValidVisibilityModifiers() { - verifyJavadoc("testdata/javadoc/visibilityModifiers.kt", ModelConfig(analysisPlatform = Platform.jvm, withKotlinRuntime = true)) { doc -> - val classDoc = doc.classNamed("foo.Apple")!! - val methods = classDoc.methods() - - val getName = methods[0] - val setName = methods[1] - val getWeight = methods[2] - val setWeight = methods[3] - val getRating = methods[4] - val setRating = methods[5] - val getCode = methods[6] - val color = classDoc.fields()[3] - val code = classDoc.fields()[4] - - assertTrue(getName.isProtected) - assertEquals(PROTECTED, getName.modifierSpecifier()) - assertTrue(setName.isProtected) - assertEquals(PROTECTED, setName.modifierSpecifier()) - - assertTrue(getWeight.isPublic) - assertEquals(PUBLIC, getWeight.modifierSpecifier()) - assertTrue(setWeight.isPublic) - assertEquals(PUBLIC, setWeight.modifierSpecifier()) - - assertTrue(getRating.isPublic) - assertEquals(PUBLIC, getRating.modifierSpecifier()) - assertTrue(setRating.isPublic) - assertEquals(PUBLIC, setRating.modifierSpecifier()) - - assertTrue(getCode.isPublic) - assertEquals(PUBLIC or STATIC, getCode.modifierSpecifier()) - - assertEquals(methods.size, 7) - - assertTrue(color.isPrivate) - assertEquals(PRIVATE, color.modifierSpecifier()) - - assertTrue(code.isPrivate) - assertTrue(code.isStatic) - assertEquals(PRIVATE or STATIC, code.modifierSpecifier()) - } - } - - @Test - fun shouldNotHaveDuplicatedConstructorParameters() { - verifyJavadoc("testdata/javadoc/constructorParameters.kt") { doc -> - val classDoc = doc.classNamed("bar.Banana")!! - val paramTags = classDoc.constructors()[0].paramTags() - - assertEquals(3, paramTags.size) - } - } - - @Test fun shouldHaveAllFunctionMarkedAsDeprecated() { - verifyJavadoc("testdata/javadoc/deprecated.java") { doc -> - val classDoc = doc.classNamed("bar.Banana")!! - - classDoc.methods().forEach { method -> - assertTrue(method.tags().any { it.kind() == "deprecated" }) - } - } - } - - @Test - fun testDefaultNoArgConstructor() { - verifyJavadoc("testdata/javadoc/defaultNoArgConstructor.kt") { doc -> - val classDoc = doc.classNamed("foo.Peach")!! - assertTrue(classDoc.constructors()[0].tags()[2].text() == "print peach") - } - } - - @Test - fun testNoArgConstructor() { - verifyJavadoc("testdata/javadoc/noArgConstructor.kt") { doc -> - val classDoc = doc.classNamed("foo.Plum")!! - assertTrue(classDoc.constructors()[0].tags()[2].text() == "print plum") - } - } - - @Test - fun testArgumentReference() { - verifyJavadoc("testdata/javadoc/argumentReference.kt") { doc -> - val classDoc = doc.classNamed("ArgumentReferenceKt")!! - val method = classDoc.methods().first() - val tag = method.seeTags().first() - assertEquals("argNamedError", tag.referencedMemberName()) - assertEquals("error", tag.label()) - } - } - - @Test - fun functionParameters() { - verifyJavadoc("testdata/javadoc/functionParameters.java") { doc -> - val tags = doc.classNamed("bar.Foo")!!.methods().first().paramTags() - assertEquals((tags.first() as ParamTagAdapter).content.size, 1) - assertEquals((tags[1] as ParamTagAdapter).content.size, 1) - } - } - - private fun verifyJavadoc(name: String, - modelConfig: ModelConfig = ModelConfig(), - callback: (ModuleNodeAdapter) -> Unit) { - - checkSourceExistsAndVerifyModel(name, - ModelConfig( - analysisPlatform = Platform.jvm, - format = "javadoc", - withJdk = modelConfig.withJdk, - withKotlinRuntime = modelConfig.withKotlinRuntime, - includeNonPublic = modelConfig.includeNonPublic - )) { model -> - val doc = ModuleNodeAdapter(model, StandardReporter(DokkaConsoleLogger), "") - callback(doc) - } - } -} -- cgit From f4920fc9d067e59a5d843a185e07c5d321c91c6d Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Wed, 11 Sep 2019 15:34:55 +0200 Subject: Extract testApi from core --- .../DokkaConfigurationTestImplementations.kt | 81 ----- core/src/test/kotlin/TestAPI.kt | 353 --------------------- core/src/test/kotlin/format/GFMFormatTest.kt | 6 +- core/src/test/kotlin/format/HtmlFormatTest.kt | 3 + .../kotlin/format/KotlinWebSiteHtmlFormatTest.kt | 8 +- core/src/test/kotlin/format/MarkdownFormatTest.kt | 9 +- core/src/test/kotlin/format/PackageDocsTest.kt | 3 +- core/src/test/kotlin/issues/IssuesTest.kt | 4 +- core/src/test/kotlin/model/ClassTest.kt | 4 + core/src/test/kotlin/model/CommentTest.kt | 9 +- core/src/test/kotlin/model/FunctionTest.kt | 5 +- core/src/test/kotlin/model/JavaTest.kt | 3 + core/src/test/kotlin/model/KotlinAsJavaTest.kt | 3 + core/src/test/kotlin/model/LinkTest.kt | 3 + core/src/test/kotlin/model/PackageTest.kt | 5 +- core/src/test/kotlin/model/PropertyTest.kt | 2 + core/src/test/kotlin/model/SourceLinksErrorTest.kt | 4 +- core/src/test/kotlin/model/SourceLinksTest.kt | 4 +- core/src/test/kotlin/model/TypeAliasTest.kt | 2 + 19 files changed, 57 insertions(+), 454 deletions(-) delete mode 100644 core/src/test/kotlin/DokkaConfigurationTestImplementations.kt delete mode 100644 core/src/test/kotlin/TestAPI.kt (limited to 'core/src/test') diff --git a/core/src/test/kotlin/DokkaConfigurationTestImplementations.kt b/core/src/test/kotlin/DokkaConfigurationTestImplementations.kt deleted file mode 100644 index a6f427b1..00000000 --- a/core/src/test/kotlin/DokkaConfigurationTestImplementations.kt +++ /dev/null @@ -1,81 +0,0 @@ -package org.jetbrains.dokka.tests - -import org.jetbrains.dokka.DokkaConfiguration -import org.jetbrains.dokka.Platform -import java.io.File - - -data class SourceLinkDefinitionImpl(override val path: String, - override val url: String, - override val lineSuffix: String?) : DokkaConfiguration.SourceLinkDefinition { - companion object { - fun parseSourceLinkDefinition(srcLink: String): DokkaConfiguration.SourceLinkDefinition { - val (path, urlAndLine) = srcLink.split('=') - return SourceLinkDefinitionImpl( - File(path).canonicalPath, - urlAndLine.substringBefore("#"), - urlAndLine.substringAfter("#", "").let { if (it.isEmpty()) null else "#$it" }) - } - } -} - -class SourceRootImpl(path: String) : DokkaConfiguration.SourceRoot { - override val path: String = File(path).absolutePath - - companion object { - fun parseSourceRoot(sourceRoot: String): DokkaConfiguration.SourceRoot = SourceRootImpl(sourceRoot) - } -} - -data class PackageOptionsImpl(override val prefix: String, - override val includeNonPublic: Boolean = false, - override val reportUndocumented: Boolean = true, - override val skipDeprecated: Boolean = false, - override val suppress: Boolean = false) : DokkaConfiguration.PackageOptions - - class DokkaConfigurationImpl( - override val outputDir: String = "", - override val format: String = "html", - override val generateIndexPages: Boolean = false, - override val cacheRoot: String? = null, - override val impliedPlatforms: List = emptyList(), - override val passesConfigurations: List = emptyList() -) : DokkaConfiguration - -class PassConfigurationImpl ( - override val classpath: List = emptyList(), - override val moduleName: String = "", - override val sourceRoots: List = emptyList(), - override val samples: List = emptyList(), - override val includes: List = emptyList(), - override val includeNonPublic: Boolean = false, - override val includeRootPackage: Boolean = false, - override val reportUndocumented: Boolean = false, - override val skipEmptyPackages: Boolean = false, - override val skipDeprecated: Boolean = false, - override val jdkVersion: Int = 6, - override val sourceLinks: List = emptyList(), - override val perPackageOptions: List = emptyList(), - externalDocumentationLinks: List = emptyList(), - override val languageVersion: String? = null, - override val apiVersion: String? = null, - override val noStdlibLink: Boolean = false, - override val noJdkLink: Boolean = false, - override val suppressedFiles: List = emptyList(), - override val collectInheritedExtensionsFromLibraries: Boolean = false, - override val analysisPlatform: Platform = Platform.DEFAULT, - override val targets: List = emptyList(), - override val sinceKotlin: String? = null -): DokkaConfiguration.PassConfiguration { - private val defaultLinks = run { - val links = mutableListOf() - if (!noJdkLink) - links += DokkaConfiguration.ExternalDocumentationLink.Builder("https://docs.oracle.com/javase/$jdkVersion/docs/api/").build() - - if (!noStdlibLink) - links += DokkaConfiguration.ExternalDocumentationLink.Builder("https://kotlinlang.org/api/latest/jvm/stdlib/").build() - links - } - override val externalDocumentationLinks = defaultLinks + externalDocumentationLinks -} - diff --git a/core/src/test/kotlin/TestAPI.kt b/core/src/test/kotlin/TestAPI.kt deleted file mode 100644 index 4f9af761..00000000 --- a/core/src/test/kotlin/TestAPI.kt +++ /dev/null @@ -1,353 +0,0 @@ -package org.jetbrains.dokka.tests - -import com.google.inject.Guice -import com.intellij.openapi.application.PathManager -import com.intellij.openapi.util.Disposer -import com.intellij.openapi.util.io.FileUtil -import com.intellij.rt.execution.junit.FileComparisonFailure -import org.jetbrains.dokka.* -import org.jetbrains.dokka.Utilities.DokkaAnalysisModule -import org.jetbrains.dokka.Utilities.DokkaRunModule -import org.jetbrains.kotlin.cli.common.config.ContentRoot -import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot -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.descriptors.DeclarationDescriptor -import org.jetbrains.kotlin.utils.PathUtil -import org.junit.Assert -import org.junit.Assert.fail -import java.io.File - -data class ModelConfig( - val roots: Array = arrayOf(), - val withJdk: Boolean = false, - val withKotlinRuntime: Boolean = false, - val format: String = "html", - val includeNonPublic: Boolean = true, - val perPackageOptions: List = emptyList(), - val analysisPlatform: Platform = Platform.DEFAULT, - val defaultPlatforms: List = emptyList(), - val noStdlibLink: Boolean = true, - val collectInheritedExtensionsFromLibraries: Boolean = false, - val sourceLinks: List = emptyList() -) - -fun verifyModel( - modelConfig: ModelConfig, - verifier: (DocumentationModule) -> Unit -) { - val documentation = DocumentationModule("test") - - val passConfiguration = PassConfigurationImpl( - includeNonPublic = modelConfig.includeNonPublic, - skipEmptyPackages = false, - includeRootPackage = true, - sourceLinks = modelConfig.sourceLinks, - perPackageOptions = modelConfig.perPackageOptions, - noStdlibLink = modelConfig.noStdlibLink, - noJdkLink = false, - languageVersion = null, - apiVersion = null, - collectInheritedExtensionsFromLibraries = modelConfig.collectInheritedExtensionsFromLibraries - ) - val configuration = DokkaConfigurationImpl( - outputDir = "", - format = modelConfig.format, - generateIndexPages = false, - cacheRoot = "default", - passesConfigurations = listOf(passConfiguration) - ) - - appendDocumentation(documentation, configuration, passConfiguration, modelConfig) - documentation.prepareForGeneration(configuration) - - verifier(documentation) -} - -fun appendDocumentation( - documentation: DocumentationModule, - dokkaConfiguration: DokkaConfiguration, - passConfiguration: DokkaConfiguration.PassConfiguration, - modelConfig: ModelConfig -) { - val messageCollector = object : MessageCollector { - override fun clear() { - - } - - override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageLocation?) { - when (severity) { - CompilerMessageSeverity.STRONG_WARNING, - CompilerMessageSeverity.WARNING, - CompilerMessageSeverity.LOGGING, - CompilerMessageSeverity.OUTPUT, - CompilerMessageSeverity.INFO, - CompilerMessageSeverity.ERROR -> { - println("$severity: $message at $location") - } - CompilerMessageSeverity.EXCEPTION -> { - fail("$severity: $message at $location") - } - } - } - - override fun hasErrors() = false - } - - val environment = AnalysisEnvironment(messageCollector, modelConfig.analysisPlatform) - environment.apply { - if (modelConfig.withJdk || modelConfig.withKotlinRuntime) { - addClasspath(PathUtil.getJdkClassesRootsFromCurrentJre()) - } - if (modelConfig.withKotlinRuntime) { - if (analysisPlatform == Platform.jvm) { - val kotlinStrictfpRoot = PathManager.getResourceRoot(Strictfp::class.java, "/kotlin/jvm/Strictfp.class") - addClasspath(File(kotlinStrictfpRoot)) - } - if (analysisPlatform == Platform.js) { - val kotlinStdlibJsRoot = PathManager.getResourceRoot(Any::class.java, "/kotlin/jquery") - addClasspath(File(kotlinStdlibJsRoot)) - } - - if (analysisPlatform == Platform.common) { - // TODO: Feels hacky - val kotlinStdlibCommonRoot = ClassLoader.getSystemResource("kotlin/UInt.kotlin_metadata") - addClasspath(File(kotlinStdlibCommonRoot.file.replace("file:", "").replaceAfter(".jar", ""))) - } - } - addRoots(modelConfig.roots.toList()) - - loadLanguageVersionSettings(passConfiguration.languageVersion, passConfiguration.apiVersion) - } - val defaultPlatformsProvider = object : DefaultPlatformsProvider { - override fun getDefaultPlatforms(descriptor: DeclarationDescriptor) = modelConfig.defaultPlatforms - } - - val globalInjector = Guice.createInjector( - DokkaRunModule(dokkaConfiguration) - ) - - val injector = globalInjector.createChildInjector( - DokkaAnalysisModule( - environment, - dokkaConfiguration, - defaultPlatformsProvider, - documentation.nodeRefGraph, - passConfiguration, - DokkaConsoleLogger - ) - ) - - buildDocumentationModule(injector, documentation) - Disposer.dispose(environment) -} - -fun checkSourceExistsAndVerifyModel( - source: String, - modelConfig: ModelConfig = ModelConfig(), - verifier: (DocumentationModule) -> Unit -) { - require(File(source).exists()) { - "Cannot find test data file $source" - } - verifyModel( - ModelConfig( - roots = arrayOf(contentRootFromPath(source)), - withJdk = modelConfig.withJdk, - withKotlinRuntime = modelConfig.withKotlinRuntime, - format = modelConfig.format, - includeNonPublic = modelConfig.includeNonPublic, - sourceLinks = modelConfig.sourceLinks, - analysisPlatform = modelConfig.analysisPlatform - ), - - verifier = verifier - ) -} - -fun verifyPackageMember( - source: String, - modelConfig: ModelConfig = ModelConfig(), - verifier: (DocumentationNode) -> Unit -) { - checkSourceExistsAndVerifyModel( - source, - modelConfig = ModelConfig( - withJdk = modelConfig.withJdk, - withKotlinRuntime = modelConfig.withKotlinRuntime, - analysisPlatform = modelConfig.analysisPlatform - ) - ) { model -> - val pkg = model.members.single() - verifier(pkg.members.single()) - } -} - -fun verifyJavaModel( - source: String, - modelConfig: ModelConfig = ModelConfig(), - verifier: (DocumentationModule) -> Unit -) { - val tempDir = FileUtil.createTempDirectory("dokka", "") - try { - val sourceFile = File(source) - FileUtil.copy(sourceFile, File(tempDir, sourceFile.name)) - verifyModel( - ModelConfig( - roots = arrayOf(JavaSourceRoot(tempDir, null)), - withJdk = true, - withKotlinRuntime = modelConfig.withKotlinRuntime, - analysisPlatform = modelConfig.analysisPlatform - ), - verifier = verifier - ) - } finally { - FileUtil.delete(tempDir) - } -} - -fun verifyJavaPackageMember( - source: String, - modelConfig: ModelConfig = ModelConfig(), - verifier: (DocumentationNode) -> Unit -) { - verifyJavaModel(source, modelConfig) { model -> - val pkg = model.members.single() - verifier(pkg.members.single()) - } -} - -fun verifyOutput( - modelConfig: ModelConfig = ModelConfig(), - outputExtension: String, - outputGenerator: (DocumentationModule, StringBuilder) -> Unit -) { - verifyModel(modelConfig) { - verifyModelOutput(it, outputExtension, modelConfig.roots.first().path, outputGenerator) - } -} - -fun verifyOutput( - path: String, - outputExtension: String, - modelConfig: ModelConfig = ModelConfig(), - outputGenerator: (DocumentationModule, StringBuilder) -> Unit -) { - verifyOutput( - ModelConfig( - roots = arrayOf(contentRootFromPath(path)) + modelConfig.roots, - withJdk = modelConfig.withJdk, - withKotlinRuntime = modelConfig.withKotlinRuntime, - format = modelConfig.format, - includeNonPublic = modelConfig.includeNonPublic, - analysisPlatform = modelConfig.analysisPlatform, - noStdlibLink = modelConfig.noStdlibLink, - collectInheritedExtensionsFromLibraries = modelConfig.collectInheritedExtensionsFromLibraries - ), - outputExtension, - outputGenerator - ) -} - -fun verifyModelOutput( - it: DocumentationModule, - outputExtension: String, - sourcePath: String, - outputGenerator: (DocumentationModule, StringBuilder) -> Unit -) { - val output = StringBuilder() - outputGenerator(it, output) - val ext = outputExtension.removePrefix(".") - val expectedFile = File(sourcePath.replaceAfterLast(".", ext, sourcePath + "." + ext)) - assertEqualsIgnoringSeparators(expectedFile, output.toString()) -} - -fun verifyJavaOutput( - path: String, - outputExtension: String, - modelConfig: ModelConfig = ModelConfig(), - outputGenerator: (DocumentationModule, StringBuilder) -> Unit -) { - verifyJavaModel(path, modelConfig) { model -> - verifyModelOutput(model, outputExtension, path, outputGenerator) - } -} - -fun assertEqualsIgnoringSeparators(expectedFile: File, output: String) { - if (!expectedFile.exists()) expectedFile.createNewFile() - val expectedText = expectedFile.readText().replace("\r\n", "\n") - val actualText = output.replace("\r\n", "\n") - - if (expectedText != actualText) - throw FileComparisonFailure("", expectedText, actualText, expectedFile.canonicalPath) -} - -fun assertEqualsIgnoringSeparators(expectedOutput: String, output: String) { - Assert.assertEquals(expectedOutput.replace("\r\n", "\n"), output.replace("\r\n", "\n")) -} - -fun StringBuilder.appendChildren(node: ContentBlock): StringBuilder { - for (child in node.children) { - val childText = child.toTestString() - append(childText) - } - return this -} - -fun StringBuilder.appendNode(node: ContentNode): StringBuilder { - when (node) { - is ContentText -> { - append(node.text) - } - is ContentEmphasis -> append("*").appendChildren(node).append("*") - is ContentBlockCode -> { - if (node.language.isNotBlank()) - appendln("[code lang=${node.language}]") - else - appendln("[code]") - appendChildren(node) - appendln() - appendln("[/code]") - } - is ContentNodeLink -> { - append("[") - appendChildren(node) - append(" -> ") - append(node.node.toString()) - append("]") - } - is ContentBlock -> { - appendChildren(node) - } - is NodeRenderContent -> { - append("render(") - append(node.node) - append(",") - append(node.mode) - append(")") - } - is ContentSymbol -> { - append(node.text) - } - is ContentEmpty -> { /* nothing */ - } - else -> throw IllegalStateException("Don't know how to format node $node") - } - return this -} - -fun ContentNode.toTestString(): String { - val node = this - return StringBuilder().apply { - appendNode(node) - }.toString() -} - -val ContentRoot.path: String - get() = when (this) { - is KotlinSourceRoot -> path - is JavaSourceRoot -> file.path - else -> throw UnsupportedOperationException() - } diff --git a/core/src/test/kotlin/format/GFMFormatTest.kt b/core/src/test/kotlin/format/GFMFormatTest.kt index 60de7d29..4807d0f2 100644 --- a/core/src/test/kotlin/format/GFMFormatTest.kt +++ b/core/src/test/kotlin/format/GFMFormatTest.kt @@ -3,6 +3,8 @@ package org.jetbrains.dokka.tests import org.jetbrains.dokka.GFMFormatService import org.jetbrains.dokka.KotlinLanguageService import org.jetbrains.dokka.Platform +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.verifyOutput import org.junit.Test abstract class BaseGFMFormatTest(val analysisPlatform: Platform) : FileGeneratorTestCase() { @@ -23,8 +25,8 @@ abstract class BaseGFMFormatTest(val analysisPlatform: Platform) : FileGenerator private fun verifyGFMNodeByName(fileName: String, name: String, modelConfig: ModelConfig) { verifyOutput("testdata/format/gfm/$fileName.kt", ".md", modelConfig) { model, output -> buildPagesAndReadInto( - model.members.single().members.filter { it.name == name }, - output + model.members.single().members.filter { it.name == name }, + output ) } } diff --git a/core/src/test/kotlin/format/HtmlFormatTest.kt b/core/src/test/kotlin/format/HtmlFormatTest.kt index 60e29006..a1742280 100644 --- a/core/src/test/kotlin/format/HtmlFormatTest.kt +++ b/core/src/test/kotlin/format/HtmlFormatTest.kt @@ -1,6 +1,9 @@ package org.jetbrains.dokka.tests import org.jetbrains.dokka.* +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.verifyJavaOutput +import org.jetbrains.dokka.testApi.verifyOutput import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot import org.junit.Test diff --git a/core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt b/core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt index ebab5f36..d8b34394 100644 --- a/core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt +++ b/core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt @@ -2,6 +2,10 @@ package org.jetbrains.dokka.tests import org.jetbrains.dokka.* import org.jetbrains.dokka.Generation.DocumentationMerger +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.appendDocumentation +import org.jetbrains.dokka.testApi.verifyModelOutput +import org.jetbrains.dokka.testApi.verifyOutput import org.junit.Test abstract class BaseKotlinWebSiteHtmlFormatTest(val analysisPlatform: Platform): FileGeneratorTestCase() { @@ -65,14 +69,14 @@ abstract class BaseKotlinWebSiteHtmlFormatTest(val analysisPlatform: Platform): private fun buildMultiplePlatforms(path: String): DocumentationModule { val moduleName = "test" - val passConfiguration = PassConfigurationImpl( + val passConfiguration = org.jetbrains.dokka.testApi.PassConfigurationImpl( noStdlibLink = true, noJdkLink = true, languageVersion = null, apiVersion = null ) - val dokkaConfiguration = DokkaConfigurationImpl( + val dokkaConfiguration = org.jetbrains.dokka.testApi.DokkaConfigurationImpl( outputDir = "", format = "kotlin-website-html", generateIndexPages = false, diff --git a/core/src/test/kotlin/format/MarkdownFormatTest.kt b/core/src/test/kotlin/format/MarkdownFormatTest.kt index 4984e1d5..8900b267 100644 --- a/core/src/test/kotlin/format/MarkdownFormatTest.kt +++ b/core/src/test/kotlin/format/MarkdownFormatTest.kt @@ -2,6 +2,7 @@ package org.jetbrains.dokka.tests import org.jetbrains.dokka.* import org.jetbrains.dokka.Generation.DocumentationMerger +import org.jetbrains.dokka.testApi.* import org.junit.Test abstract class BaseMarkdownFormatTest(val analysisPlatform: Platform): FileGeneratorTestCase() { @@ -257,14 +258,14 @@ abstract class BaseMarkdownFormatTest(val analysisPlatform: Platform): FileGener @Test fun packagePlatformsWithExtExtensions() { val path = "multiplatform/packagePlatformsWithExtExtensions" val module = DocumentationModule("test") - val passConfiguration = PassConfigurationImpl( + val passConfiguration = org.jetbrains.dokka.testApi.PassConfigurationImpl( noStdlibLink = true, noJdkLink = true, languageVersion = null, apiVersion = null ) - val dokkaConfiguration = DokkaConfigurationImpl( + val dokkaConfiguration = org.jetbrains.dokka.testApi.DokkaConfigurationImpl( outputDir = "", format = "html", generateIndexPages = false, @@ -388,13 +389,13 @@ abstract class BaseMarkdownFormatTest(val analysisPlatform: Platform): FileGener private fun buildMultiplePlatforms(path: String): DocumentationModule { val moduleName = "test" - val passConfiguration = PassConfigurationImpl( + val passConfiguration = org.jetbrains.dokka.testApi.PassConfigurationImpl( noStdlibLink = true, noJdkLink = true, languageVersion = null, apiVersion = null ) - val dokkaConfiguration = DokkaConfigurationImpl( + val dokkaConfiguration = org.jetbrains.dokka.testApi.DokkaConfigurationImpl( outputDir = "", format = "html", generateIndexPages = false, diff --git a/core/src/test/kotlin/format/PackageDocsTest.kt b/core/src/test/kotlin/format/PackageDocsTest.kt index 3ff5f123..c5fe7beb 100644 --- a/core/src/test/kotlin/format/PackageDocsTest.kt +++ b/core/src/test/kotlin/format/PackageDocsTest.kt @@ -7,10 +7,9 @@ import com.nhaarman.mockito_kotlin.doAnswer import com.nhaarman.mockito_kotlin.eq import com.nhaarman.mockito_kotlin.mock import org.jetbrains.dokka.* -import org.jetbrains.dokka.tests.assertEqualsIgnoringSeparators +import org.jetbrains.dokka.testApi.assertEqualsIgnoringSeparators import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.junit.After diff --git a/core/src/test/kotlin/issues/IssuesTest.kt b/core/src/test/kotlin/issues/IssuesTest.kt index da5acd6e..80370d5e 100644 --- a/core/src/test/kotlin/issues/IssuesTest.kt +++ b/core/src/test/kotlin/issues/IssuesTest.kt @@ -3,8 +3,8 @@ package issues import org.jetbrains.dokka.DocumentationNode import org.jetbrains.dokka.NodeKind import org.jetbrains.dokka.Platform -import org.jetbrains.dokka.tests.ModelConfig -import org.jetbrains.dokka.tests.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel import org.junit.Test import kotlin.test.assertEquals diff --git a/core/src/test/kotlin/model/ClassTest.kt b/core/src/test/kotlin/model/ClassTest.kt index 35ec1d09..b479e59e 100644 --- a/core/src/test/kotlin/model/ClassTest.kt +++ b/core/src/test/kotlin/model/ClassTest.kt @@ -4,6 +4,10 @@ import org.jetbrains.dokka.Content import org.jetbrains.dokka.NodeKind import org.jetbrains.dokka.Platform import org.jetbrains.dokka.RefKind +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.toTestString +import org.jetbrains.dokka.testApi.verifyPackageMember import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue diff --git a/core/src/test/kotlin/model/CommentTest.kt b/core/src/test/kotlin/model/CommentTest.kt index 08aa3572..b94e9d0c 100644 --- a/core/src/test/kotlin/model/CommentTest.kt +++ b/core/src/test/kotlin/model/CommentTest.kt @@ -1,8 +1,13 @@ package org.jetbrains.dokka.tests +import org.jetbrains.dokka.Content +import org.jetbrains.dokka.Platform +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.assertEqualsIgnoringSeparators +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.toTestString +import org.junit.Assert.assertEquals import org.junit.Test -import org.junit.Assert.* -import org.jetbrains.dokka.* abstract class BaseCommentTest(val analysisPlatform: Platform) { val defaultModelConfig = ModelConfig(analysisPlatform = analysisPlatform) diff --git a/core/src/test/kotlin/model/FunctionTest.kt b/core/src/test/kotlin/model/FunctionTest.kt index 4c6bfb74..9900446a 100644 --- a/core/src/test/kotlin/model/FunctionTest.kt +++ b/core/src/test/kotlin/model/FunctionTest.kt @@ -3,7 +3,10 @@ package org.jetbrains.dokka.tests import org.jetbrains.dokka.Content import org.jetbrains.dokka.NodeKind import org.jetbrains.dokka.Platform -import org.jetbrains.kotlin.analyzer.PlatformAnalysisParameters +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.toTestString +import org.jetbrains.dokka.testApi.verifyPackageMember import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue diff --git a/core/src/test/kotlin/model/JavaTest.kt b/core/src/test/kotlin/model/JavaTest.kt index da9da624..018ab089 100644 --- a/core/src/test/kotlin/model/JavaTest.kt +++ b/core/src/test/kotlin/model/JavaTest.kt @@ -3,6 +3,9 @@ package org.jetbrains.dokka.tests import org.jetbrains.dokka.NodeKind import org.jetbrains.dokka.Platform import org.jetbrains.dokka.RefKind +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.toTestString +import org.jetbrains.dokka.testApi.verifyJavaPackageMember import org.junit.Assert.* import org.junit.Ignore import org.junit.Test diff --git a/core/src/test/kotlin/model/KotlinAsJavaTest.kt b/core/src/test/kotlin/model/KotlinAsJavaTest.kt index 8249dd0f..80ff95bd 100644 --- a/core/src/test/kotlin/model/KotlinAsJavaTest.kt +++ b/core/src/test/kotlin/model/KotlinAsJavaTest.kt @@ -4,6 +4,9 @@ import org.jetbrains.dokka.DocumentationModule import org.jetbrains.dokka.NodeKind import org.jetbrains.dokka.Platform import org.jetbrains.dokka.RefKind +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.toTestString import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Test diff --git a/core/src/test/kotlin/model/LinkTest.kt b/core/src/test/kotlin/model/LinkTest.kt index 6526a4db..08e27db8 100644 --- a/core/src/test/kotlin/model/LinkTest.kt +++ b/core/src/test/kotlin/model/LinkTest.kt @@ -4,6 +4,9 @@ import org.jetbrains.dokka.ContentBlock import org.jetbrains.dokka.ContentNodeLazyLink import org.jetbrains.dokka.NodeKind import org.jetbrains.dokka.Platform +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.toTestString import org.junit.Assert.assertEquals import org.junit.Test diff --git a/core/src/test/kotlin/model/PackageTest.kt b/core/src/test/kotlin/model/PackageTest.kt index 47c88385..0afbbb5d 100644 --- a/core/src/test/kotlin/model/PackageTest.kt +++ b/core/src/test/kotlin/model/PackageTest.kt @@ -1,6 +1,9 @@ package org.jetbrains.dokka.tests import org.jetbrains.dokka.* +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.verifyModel import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot import org.junit.Assert.* import org.junit.Test @@ -121,7 +124,7 @@ abstract class BasePackageTest(val analysisPlatform: Platform) { ModelConfig( roots = arrayOf(KotlinSourceRoot("testdata/packages/classInPackage.kt", false)), perPackageOptions = listOf( - PackageOptionsImpl(prefix = "simple.name", suppress = true) + org.jetbrains.dokka.testApi.PackageOptionsImpl(prefix = "simple.name", suppress = true) ), analysisPlatform = analysisPlatform ) diff --git a/core/src/test/kotlin/model/PropertyTest.kt b/core/src/test/kotlin/model/PropertyTest.kt index 9f070862..bce3c585 100644 --- a/core/src/test/kotlin/model/PropertyTest.kt +++ b/core/src/test/kotlin/model/PropertyTest.kt @@ -1,6 +1,8 @@ package org.jetbrains.dokka.tests import org.jetbrains.dokka.* +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue diff --git a/core/src/test/kotlin/model/SourceLinksErrorTest.kt b/core/src/test/kotlin/model/SourceLinksErrorTest.kt index 9812569d..2d587856 100644 --- a/core/src/test/kotlin/model/SourceLinksErrorTest.kt +++ b/core/src/test/kotlin/model/SourceLinksErrorTest.kt @@ -2,8 +2,8 @@ package org.jetbrains.dokka.tests.model import org.jetbrains.dokka.NodeKind import org.jetbrains.dokka.SourceLinkDefinitionImpl -import org.jetbrains.dokka.tests.ModelConfig -import org.jetbrains.dokka.tests.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel import org.junit.Assert import org.junit.Test import java.io.File diff --git a/core/src/test/kotlin/model/SourceLinksTest.kt b/core/src/test/kotlin/model/SourceLinksTest.kt index a4ba870c..8f7766f6 100644 --- a/core/src/test/kotlin/model/SourceLinksTest.kt +++ b/core/src/test/kotlin/model/SourceLinksTest.kt @@ -2,8 +2,8 @@ package org.jetbrains.dokka.tests.model import org.jetbrains.dokka.NodeKind import org.jetbrains.dokka.SourceLinkDefinitionImpl -import org.jetbrains.dokka.tests.ModelConfig -import org.jetbrains.dokka.tests.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.ModelConfig +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel import org.junit.Assert import org.junit.Test import org.junit.runner.RunWith diff --git a/core/src/test/kotlin/model/TypeAliasTest.kt b/core/src/test/kotlin/model/TypeAliasTest.kt index 71976dc3..6c9b90a8 100644 --- a/core/src/test/kotlin/model/TypeAliasTest.kt +++ b/core/src/test/kotlin/model/TypeAliasTest.kt @@ -3,6 +3,8 @@ package org.jetbrains.dokka.tests import junit.framework.TestCase.assertEquals import org.jetbrains.dokka.Content import org.jetbrains.dokka.NodeKind +import org.jetbrains.dokka.testApi.checkSourceExistsAndVerifyModel +import org.jetbrains.dokka.testApi.toTestString import org.junit.Test class TypeAliasTest { -- cgit From 14a290009098b777521b1dedb551047fb66ba73b Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Tue, 29 Oct 2019 11:46:04 +0100 Subject: [WIP] new model --- core/src/test/kotlin/dri/DRITest.kt | 37 +++++++++ .../ExternalLocationProviderTest.kt | 25 ++++++ .../test/kotlin/linkResolvers/LinkResolverTest.kt | 92 ++++++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 core/src/test/kotlin/dri/DRITest.kt create mode 100644 core/src/test/kotlin/externalLocationProviders/ExternalLocationProviderTest.kt create mode 100644 core/src/test/kotlin/linkResolvers/LinkResolverTest.kt (limited to 'core/src/test') diff --git a/core/src/test/kotlin/dri/DRITest.kt b/core/src/test/kotlin/dri/DRITest.kt new file mode 100644 index 00000000..b763bce8 --- /dev/null +++ b/core/src/test/kotlin/dri/DRITest.kt @@ -0,0 +1,37 @@ +package org.jetbrains.dokka.tests.dri + +import org.jetbrains.dokka.links.Callable +import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.resolvers.toJavadocLocation +import org.junit.Test +import kotlin.test.assertEquals + +class DRITest { + @Test + fun onlyClassNames() { + val expected = DRI(classNames = "className1.className2") + val actual = DRI.from("/className1.className2////") + assertEquals(expected, actual) + } + + @Test + fun fullDRI() { + val expected = DRI("org.dokka", "className1.className2", Callable("", "", "", listOf("Int")), 2, "something" ) + val actual = DRI.from("org.dokka/className1.className2//..Int/2/something") + assertEquals(expected, actual) + } + + @Test + fun onlyExtra() { + val expected = DRI(null, null, null, null, "extra" ) + val actual = DRI.from("/////extra") + assertEquals(expected, actual) + } + + @Test + fun javadoc8Location() { + val dri = DRI("org.jetbrains.dokka", "DRITest", "javadocLocation", ".void.") + assertEquals("org/jetbrains/dokka/DRITest.html#javadocLocation--", dri.toJavadocLocation(8)) + } +} + diff --git a/core/src/test/kotlin/externalLocationProviders/ExternalLocationProviderTest.kt b/core/src/test/kotlin/externalLocationProviders/ExternalLocationProviderTest.kt new file mode 100644 index 00000000..860f4534 --- /dev/null +++ b/core/src/test/kotlin/externalLocationProviders/ExternalLocationProviderTest.kt @@ -0,0 +1,25 @@ +package org.jetbrains.dokka.tests.externalLocationProviders + +import junit.framework.Assert.assertEquals +import org.jetbrains.dokka.DokkaConfiguration +import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.resolvers.ExternalLocationProvider +import org.junit.Test + + +class ExternalLocationProviderTest { + val stdlibLink = DokkaConfiguration.ExternalDocumentationLink.Builder("https://kotlinlang.org/api/latest/jvm/stdlib/").build() + @Test fun kotlinString() { + val dri = DRI("kotlin", "String") + val link = ExternalLocationProvider.getLocation(dri, listOf(stdlibLink.packageListUrl)) + assertEquals("kotlin/-string/index.html", link) + } + + @Test fun kotlinCompareTo() { + val dri = DRI("kotlin", "String", "compareTo", "#Int#String") + val link = ExternalLocationProvider.getLocation(dri, listOf(stdlibLink.packageListUrl)) + assertEquals("kotlin/-string/compare-to.html", link) + } + +} + diff --git a/core/src/test/kotlin/linkResolvers/LinkResolverTest.kt b/core/src/test/kotlin/linkResolvers/LinkResolverTest.kt new file mode 100644 index 00000000..b2cccce2 --- /dev/null +++ b/core/src/test/kotlin/linkResolvers/LinkResolverTest.kt @@ -0,0 +1,92 @@ +package org.jetbrains.dokka.tests.linkResolvers +// +//import junit.framework.Assert.assertEquals +//import org.jetbrains.dokka.testApi.DokkaConfigurationImpl +//import org.jetbrains.dokka.Platform +//import org.jetbrains.dokka.links.DRI +//import org.jetbrains.dokka.pages.* +//import org.jetbrains.dokka.renderers.FileWriter +//import org.jetbrains.dokka.renderers.NewHtmlRenderer +//import org.jetbrains.dokka.resolvers.DefaultLocationProvider +//import org.junit.Test +// +// +//class LinkResolverTest { +// +// fun createModel(): ModulePageNode { +// val platform = listOf(PlatformData("jvm", Platform.jvm)) +// +// val moduleSymbol = ContentSymbol( +// listOf(ContentText("moduleName", platform)), +// platform) +// +// val packageDRI = DRI("packageName") +// +// val module = ModulePageNode("", +// listOf(moduleSymbol, ContentBlock( +// "packages", +// listOf(ContentGroup(listOf(ContentLink("packageName", packageDRI, platform)), platform)), +// platform) +// ), +// null) +// +// val packageSymbol = ContentSymbol( +// listOf(ContentText("package moduleName.packageName", platform)), +// platform) +// +// val packageNode = PackagePageNode("packageName", listOf(packageSymbol), module, DRI("packageName")) +// +// val classSymbol = ContentSymbol( +// listOf(ContentText("class ClassName()", platform)), +// platform) +// +// val classNode = ClassPageNode("className", listOf(classSymbol), packageNode, DRI("packageName", "className")) +// +// val memberSymbol = ContentSymbol( +// listOf(ContentText("fun funName(): String", platform)), +// platform) +// +// val memberText = ContentText("This is some docs for funName", platform) +// +// val memberNode = MemberPageNode("funName", +// listOf(memberSymbol, ContentComment(listOf(memberText), platform)), +// classNode, +// DRI("packageName", "className", "funName", "...")) +// +// module.appendChild(packageNode) +// packageNode.appendChild(classNode) +// classNode.appendChild(memberNode) +// return module +// } +// +// @Test fun memberLink() { +// val model = createModel() +// val linkResolver = DefaultLocationProvider(model, DokkaConfigurationImpl()) +// val link = linkResolver.resolve(model.children.first().children.first().children.first()) +// assertEquals("/--root--/package-name/class-name/fun-name", link) +// } +// +// @Test fun classLink() { +// val model = createModel() +// val linkResolver = DefaultLocationProvider(model, DokkaConfigurationImpl()) +// val link = linkResolver.resolve(model.children.first().children.first()) +// assertEquals("/--root--/package-name/class-name/index", link) +// } +// +// @Test fun moduleLink() { +// val model = createModel() +// val linkResolver = DefaultLocationProvider(model, DokkaConfigurationImpl()) +// val link = linkResolver.resolve(model) +// assertEquals("/--root--/index", link) +// } +// +// @Test fun writeToFile() { +// val model = createModel() +// val linkResolver = DefaultLocationProvider(model, DokkaConfigurationImpl()) +// val fileWriter = FileWriter("/Users/kamildoleglo/IdeaProjects/dokka/build/dokka", ".html") +// val renderer = NewHtmlRenderer("/Users/kamildoleglo/IdeaProjects/dokka/build/dokka", fileWriter, linkResolver) +// renderer.render(model) +// } +// +//} +// -- cgit From 57830827b9bc13aad7af6ab899f25b278b248ef7 Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Thu, 31 Oct 2019 11:47:41 +0100 Subject: [WIP] commit before rebase --- .../kotlin/markdownParser/MarkdownParserTest.kt | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 core/src/test/kotlin/markdownParser/MarkdownParserTest.kt (limited to 'core/src/test') diff --git a/core/src/test/kotlin/markdownParser/MarkdownParserTest.kt b/core/src/test/kotlin/markdownParser/MarkdownParserTest.kt new file mode 100644 index 00000000..466d78a6 --- /dev/null +++ b/core/src/test/kotlin/markdownParser/MarkdownParserTest.kt @@ -0,0 +1,28 @@ +package org.jetbrains.dokka.tests.markdownParser + +import junit.framework.Assert.assertEquals +import junit.framework.Assert.assertTrue +import org.jetbrains.dokka.DokkaConfiguration +import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.pages.buildContent +import org.jetbrains.dokka.parseMarkdown +import org.jetbrains.dokka.resolvers.ExternalLocationProvider +import org.junit.Test + + +class MarkdownParserTest { + + @Test fun basicTest() { + val markdown = """ + # Header 1 test + this is some text + more text + let's say there are some parentheses, like ( and ) + """.trimIndent() + val node = parseMarkdown(markdown) + val content = buildContent(node, emptyList()) + assertTrue(content.isNotEmpty()) + } + +} + -- cgit From 7c30624e3d0868346823b15b5cea5e29a56357f2 Mon Sep 17 00:00:00 2001 From: Kamil Doległo Date: Thu, 31 Oct 2019 12:10:10 +0100 Subject: Remove all unnecessary files --- core/src/test/kotlin/NodeSelect.kt | 90 --- .../test/kotlin/format/FileGeneratorTestCase.kt | 35 -- core/src/test/kotlin/format/GFMFormatTest.kt | 38 -- core/src/test/kotlin/format/HtmlFormatTest.kt | 195 ------- .../kotlin/format/KotlinWebSiteHtmlFormatTest.kt | 127 ----- core/src/test/kotlin/format/MarkdownFormatTest.kt | 616 --------------------- core/src/test/kotlin/format/PackageDocsTest.kt | 91 --- core/src/test/kotlin/issues/IssuesTest.kt | 34 -- core/src/test/kotlin/model/ClassTest.kt | 322 ----------- core/src/test/kotlin/model/CommentTest.kt | 195 ------- core/src/test/kotlin/model/FunctionTest.kt | 284 ---------- core/src/test/kotlin/model/JavaTest.kt | 213 ------- core/src/test/kotlin/model/KotlinAsJavaTest.kt | 68 --- core/src/test/kotlin/model/LinkTest.kt | 94 ---- core/src/test/kotlin/model/PackageTest.kt | 139 ----- core/src/test/kotlin/model/PropertyTest.kt | 131 ----- core/src/test/kotlin/model/SourceLinksErrorTest.kt | 35 -- core/src/test/kotlin/model/SourceLinksTest.kt | 75 --- core/src/test/kotlin/model/TypeAliasTest.kt | 134 ----- 19 files changed, 2916 deletions(-) delete mode 100644 core/src/test/kotlin/NodeSelect.kt delete mode 100644 core/src/test/kotlin/format/FileGeneratorTestCase.kt delete mode 100644 core/src/test/kotlin/format/GFMFormatTest.kt delete mode 100644 core/src/test/kotlin/format/HtmlFormatTest.kt delete mode 100644 core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt delete mode 100644 core/src/test/kotlin/format/MarkdownFormatTest.kt delete mode 100644 core/src/test/kotlin/format/PackageDocsTest.kt delete mode 100644 core/src/test/kotlin/issues/IssuesTest.kt delete mode 100644 core/src/test/kotlin/model/ClassTest.kt delete mode 100644 core/src/test/kotlin/model/CommentTest.kt delete mode 100644 core/src/test/kotlin/model/FunctionTest.kt delete mode 100644 core/src/test/kotlin/model/JavaTest.kt delete mode 100644 core/src/test/kotlin/model/KotlinAsJavaTest.kt delete mode 100644 core/src/test/kotlin/model/LinkTest.kt delete mode 100644 core/src/test/kotlin/model/PackageTest.kt delete mode 100644 core/src/test/kotlin/model/PropertyTest.kt delete mode 100644 core/src/test/kotlin/model/SourceLinksErrorTest.kt delete mode 100644 core/src/test/kotlin/model/SourceLinksTest.kt delete mode 100644 core/src/test/kotlin/model/TypeAliasTest.kt (limited to 'core/src/test') diff --git a/core/src/test/kotlin/NodeSelect.kt b/core/src/test/kotlin/NodeSelect.kt deleted file mode 100644 index fe0394f9..00000000 --- a/core/src/test/kotlin/NodeSelect.kt +++ /dev/null @@ -1,90 +0,0 @@ -package org.jetbrains.dokka.tests - -import org.jetbrains.dokka.DocumentationNode -import org.jetbrains.dokka.NodeKind -import org.jetbrains.dokka.RefKind - -class SelectBuilder { - private val root = ChainFilterNode(SubgraphTraverseFilter(), null) - private var activeNode = root - private val chainEnds = mutableListOf() - - fun withName(name: String) = matching { it.name == name } - - fun withKind(kind: NodeKind) = matching{ it.kind == kind } - - fun matching(block: (DocumentationNode) -> Boolean) { - attachFilterAndMakeActive(PredicateFilter(block)) - } - - fun subgraph() { - attachFilterAndMakeActive(SubgraphTraverseFilter()) - } - - fun subgraphOf(kind: RefKind) { - attachFilterAndMakeActive(DirectEdgeFilter(kind)) - } - - private fun attachFilterAndMakeActive(next: SelectFilter) { - activeNode = ChainFilterNode(next, activeNode) - } - - private fun endChain() { - chainEnds += activeNode - } - - fun build(): SelectFilter { - endChain() - return CombineFilterNode(chainEnds) - } -} - -private class ChainFilterNode(val filter: SelectFilter, val previous: SelectFilter?): SelectFilter() { - override fun select(roots: Sequence): Sequence { - return filter.select(previous?.select(roots) ?: roots) - } -} - -private class CombineFilterNode(val previous: List): SelectFilter() { - override fun select(roots: Sequence): Sequence { - return previous.asSequence().flatMap { it.select(roots) } - } -} - -abstract class SelectFilter { - abstract fun select(roots: Sequence): Sequence -} - -private class SubgraphTraverseFilter: SelectFilter() { - override fun select(roots: Sequence): Sequence { - val visited = mutableSetOf() - return roots.flatMap { - generateSequence(listOf(it)) { nodes -> - nodes.flatMap { it.allReferences() } - .map { it.to } - .filter { visited.add(it) } - .takeUnless { it.isEmpty() } - } - }.flatten() - } - -} - -private class PredicateFilter(val condition: (DocumentationNode) -> Boolean): SelectFilter() { - override fun select(roots: Sequence): Sequence { - return roots.filter(condition) - } -} - -private class DirectEdgeFilter(val kind: RefKind): SelectFilter() { - override fun select(roots: Sequence): Sequence { - return roots.flatMap { it.references(kind).asSequence() }.map { it.to } - } -} - - -fun selectNodes(root: DocumentationNode, block: SelectBuilder.() -> Unit): List { - val builder = SelectBuilder() - builder.apply(block) - return builder.build().select(sequenceOf(root)).toMutableSet().toList() -} \ No newline at end of file diff --git a/core/src/test/kotlin/format/FileGeneratorTestCase.kt b/core/src/test/kotlin/format/FileGeneratorTestCase.kt deleted file mode 100644 index ef9e815d..00000000 --- a/core/src/test/kotlin/format/FileGeneratorTestCase.kt +++ /dev/null @@ -1,35 +0,0 @@ -package org.jetbrains.dokka.tests - -import org.jetbrains.dokka.* -import org.junit.Before -import org.junit.Rule -import org.junit.rules.TemporaryFolder - - -abstract class FileGeneratorTestCase { - abstract val formatService: FormatService - - @get:Rule - var folder = TemporaryFolder() - - val fileGenerator = FileGenerator(folder.apply { create() }.root) - - @Before - fun bindGenerator() { - fileGenerator.formatService = formatService - } - - fun buildPagesAndReadInto(nodes: List, sb: StringBuilder) = with(fileGenerator) { - buildPages(nodes) - val byLocations = nodes.groupBy { location(it) } - byLocations.forEach { (loc, _) -> - if (byLocations.size > 1) { - if (sb.isNotBlank() && !sb.endsWith('\n')) { - sb.appendln() - } - sb.appendln("") - } - sb.append(loc.file.readText()) - } - } -} \ No newline at end of file diff --git a/core/src/test/kotlin/format/GFMFormatTest.kt b/core/src/test/kotlin/format/GFMFormatTest.kt deleted file mode 100644 index 4807d0f2..00000000 --- a/core/src/test/kotlin/format/GFMFormatTest.kt +++ /dev/null @@ -1,38 +0,0 @@ -package org.jetbrains.dokka.tests - -import org.jetbrains.dokka.GFMFormatService -import org.jetbrains.dokka.KotlinLanguageService -import org.jetbrains.dokka.Platform -import org.jetbrains.dokka.testApi.ModelConfig -import org.jetbrains.dokka.testApi.verifyOutput -import org.junit.Test - -abstract class BaseGFMFormatTest(val analysisPlatform: Platform) : FileGeneratorTestCase() { - override val formatService = GFMFormatService(fileGenerator, KotlinLanguageService(), listOf()) - private val defaultModelConfig = ModelConfig(analysisPlatform = analysisPlatform) - - - @Test - fun sample() { - verifyGFMNodeByName("sample", "Foo", defaultModelConfig) - } - - @Test - fun listInTableCell() { - verifyGFMNodeByName("listInTableCell", "Foo", defaultModelConfig) - } - - private fun verifyGFMNodeByName(fileName: String, name: String, modelConfig: ModelConfig) { - verifyOutput("testdata/format/gfm/$fileName.kt", ".md", modelConfig) { model, output -> - buildPagesAndReadInto( - model.members.single().members.filter { it.name == name }, - output - ) - } - } -} - - -class JsGFMFormatTest : BaseGFMFormatTest(Platform.js) -class JvmGFMFormatTest : BaseGFMFormatTest(Platform.jvm) -class CommonGFMFormatTest : BaseGFMFormatTest(Platform.common) \ No newline at end of file diff --git a/core/src/test/kotlin/format/HtmlFormatTest.kt b/core/src/test/kotlin/format/HtmlFormatTest.kt deleted file mode 100644 index a1742280..00000000 --- a/core/src/test/kotlin/format/HtmlFormatTest.