aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/test
diff options
context:
space:
mode:
authorMarcin Aman <marcin.aman@gmail.com>2020-12-29 14:38:19 +0100
committerGitHub <noreply@github.com>2020-12-29 14:38:19 +0100
commitf5e7cffbebb66b989c64bdda61e1f7809ddc6068 (patch)
treeea0ef4b550f9a55681a915d5cb4d9f1beca22041 /plugins/base/src/test
parente55f3b015faec3f62e829a2aa5984e4bd6d5037e (diff)
downloaddokka-f5e7cffbebb66b989c64bdda61e1f7809ddc6068.tar.gz
dokka-f5e7cffbebb66b989c64bdda61e1f7809ddc6068.tar.bz2
dokka-f5e7cffbebb66b989c64bdda61e1f7809ddc6068.zip
Parsing of JvmName (#1675)
* Parsing of JvmName * Make JvmName processor run after KaJ
Diffstat (limited to 'plugins/base/src/test')
-rw-r--r--plugins/base/src/test/kotlin/content/annotations/ContentForAnnotationsTest.kt46
-rw-r--r--plugins/base/src/test/kotlin/content/annotations/FileLevelJvmNameTest.kt111
-rw-r--r--plugins/base/src/test/kotlin/model/ClassesTest.kt14
-rw-r--r--plugins/base/src/test/kotlin/model/FunctionsTest.kt16
-rw-r--r--plugins/base/src/test/kotlin/model/JavaTest.kt2
-rw-r--r--plugins/base/src/test/kotlin/model/PropertyTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/signatures/SignatureTest.kt12
7 files changed, 180 insertions, 27 deletions
diff --git a/plugins/base/src/test/kotlin/content/annotations/ContentForAnnotationsTest.kt b/plugins/base/src/test/kotlin/content/annotations/ContentForAnnotationsTest.kt
index b90c7350..d88d9505 100644
--- a/plugins/base/src/test/kotlin/content/annotations/ContentForAnnotationsTest.kt
+++ b/plugins/base/src/test/kotlin/content/annotations/ContentForAnnotationsTest.kt
@@ -4,10 +4,16 @@ import matchers.content.*
import org.jetbrains.dokka.pages.ContentPage
import org.jetbrains.dokka.pages.PackagePageNode
import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
+import org.jetbrains.dokka.links.DRI
+import org.jetbrains.dokka.model.Annotations
+import org.jetbrains.dokka.model.StringValue
+import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
import org.junit.jupiter.api.Test
import utils.ParamAttributes
import utils.bareSignature
import utils.propertySignature
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
class ContentForAnnotationsTest : BaseAbstractTest() {
@@ -18,6 +24,7 @@ class ContentForAnnotationsTest : BaseAbstractTest() {
sourceSet {
sourceRoots = listOf("src/")
analysisPlatform = "jvm"
+ classpath += jvmStdlibPath!!
}
}
}
@@ -218,4 +225,43 @@ class ContentForAnnotationsTest : BaseAbstractTest() {
}
}
}
+
+ @Test
+ fun `JvmName for property with setter and getter`(){
+ testInline(
+ """
+ |/src/main/kotlin/test/source.kt
+ |package test
+ |@get:JvmName("xd")
+ |@set:JvmName("asd")
+ |var property: String
+ | get() = ""
+ | set(value) {}
+ """.trimIndent(), testConfiguration) {
+ documentablesCreationStage = { modules ->
+ fun expectedAnnotation(name: String) = Annotations.Annotation(
+ dri = DRI("kotlin.jvm", "JvmName"),
+ params = mapOf("name" to StringValue(name)),
+ scope = Annotations.AnnotationScope.DIRECT,
+ mustBeDocumented = false
+ )
+
+ val property = modules.flatMap { it.packages }.flatMap { it.properties }.first()
+ val getterAnnotation = property.getter?.extra?.get(Annotations)?.let {
+ it.directAnnotations.entries.firstNotNullResult { (_, annotations) -> annotations.firstOrNull() }
+ }
+ val setterAnnotation = property.getter?.extra?.get(Annotations)?.let {
+ it.directAnnotations.entries.firstNotNullResult { (_, annotations) -> annotations.firstOrNull() }
+ }
+
+ assertEquals(expectedAnnotation("xd"), getterAnnotation)
+ assertFalse(getterAnnotation?.mustBeDocumented!!)
+ assertEquals(Annotations.AnnotationScope.DIRECT, getterAnnotation.scope)
+
+ assertEquals(expectedAnnotation("asd"), setterAnnotation)
+ assertFalse(setterAnnotation?.mustBeDocumented!!)
+ assertEquals(Annotations.AnnotationScope.DIRECT, setterAnnotation.scope)
+ }
+ }
+ }
}
diff --git a/plugins/base/src/test/kotlin/content/annotations/FileLevelJvmNameTest.kt b/plugins/base/src/test/kotlin/content/annotations/FileLevelJvmNameTest.kt
new file mode 100644
index 00000000..f2fd518c
--- /dev/null
+++ b/plugins/base/src/test/kotlin/content/annotations/FileLevelJvmNameTest.kt
@@ -0,0 +1,111 @@
+package content.annotations
+
+import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
+import org.jetbrains.dokka.links.DRI
+import org.jetbrains.dokka.model.Annotations
+import org.jetbrains.dokka.model.StringValue
+import org.junit.jupiter.params.ParameterizedTest
+import org.junit.jupiter.params.provider.ValueSource
+import kotlin.test.assertEquals
+
+class FileLevelJvmNameTest : BaseAbstractTest() {
+ private val testConfiguration = dokkaConfiguration {
+ sourceSets {
+ sourceSet {
+ sourceRoots = listOf("src/")
+ analysisPlatform = "jvm"
+ classpath += jvmStdlibPath!!
+ }
+ }
+ }
+
+ companion object {
+ private const val functionTest =
+ """
+ |/src/main/kotlin/test/source.kt
+ |@file:JvmName("CustomJvmName")
+ |package test
+ |
+ |fun function(abc: String): String {
+ | return "Hello, " + abc
+ |}
+ """
+
+ private const val extensionFunctionTest =
+ """
+ |/src/main/kotlin/test/source.kt
+ |@file:JvmName("CustomJvmName")
+ |package test
+ |
+ |fun String.function(abc: String): String {
+ | return "Hello, " + abc
+ |}
+ """
+
+ private const val propertyTest =
+ """
+ |/src/main/kotlin/test/source.kt
+ |@file:JvmName("CustomJvmName")
+ |package test
+ |
+ |val property: String
+ | get() = ""
+ """
+
+ private const val extensionPropertyTest =
+ """
+ |/src/main/kotlin/test/source.kt
+ |@file:JvmName("CustomJvmName")
+ |package test
+ |
+ |val String.property: String
+ | get() = ""
+ """
+ }
+
+ @ParameterizedTest
+ @ValueSource(strings = [functionTest, extensionFunctionTest])
+ fun `jvm name should be included in functions extra`(query: String) {
+ testInline(
+ query.trimIndent(), testConfiguration
+ ) {
+ documentablesCreationStage = { modules ->
+ val expectedAnnotation = Annotations.Annotation(
+ dri = DRI("kotlin.jvm", "JvmName"),
+ params = mapOf("name" to StringValue("CustomJvmName")),
+ scope = Annotations.AnnotationScope.FILE,
+ mustBeDocumented = false
+ )
+ val function = modules.flatMap { it.packages }.first().functions.first()
+ val annotation = function.extra[Annotations]?.fileLevelAnnotations?.entries?.first()?.value?.single()
+ assertEquals(emptyMap(), function.extra[Annotations]?.directAnnotations)
+ assertEquals(expectedAnnotation, annotation)
+ assertEquals(expectedAnnotation.scope, annotation?.scope)
+ assertEquals(expectedAnnotation.mustBeDocumented, annotation?.mustBeDocumented)
+ }
+ }
+ }
+
+ @ParameterizedTest
+ @ValueSource(strings = [propertyTest, extensionPropertyTest])
+ fun `jvm name should be included in properties extra`(query: String) {
+ testInline(
+ query.trimIndent(), testConfiguration
+ ) {
+ documentablesCreationStage = { modules ->
+ val expectedAnnotation = Annotations.Annotation(
+ dri = DRI("kotlin.jvm", "JvmName"),
+ params = mapOf("name" to StringValue("CustomJvmName")),
+ scope = Annotations.AnnotationScope.FILE,
+ mustBeDocumented = false
+ )
+ val properties = modules.flatMap { it.packages }.first().properties.first()
+ val annotation = properties.extra[Annotations]?.fileLevelAnnotations?.entries?.first()?.value?.single()
+ assertEquals(emptyMap(), properties.extra[Annotations]?.directAnnotations)
+ assertEquals(expectedAnnotation, annotation)
+ assertEquals(expectedAnnotation.scope, annotation?.scope)
+ assertEquals(expectedAnnotation.mustBeDocumented, annotation?.mustBeDocumented)
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/base/src/test/kotlin/model/ClassesTest.kt b/plugins/base/src/test/kotlin/model/ClassesTest.kt
index b6787126..2260a46f 100644
--- a/plugins/base/src/test/kotlin/model/ClassesTest.kt
+++ b/plugins/base/src/test/kotlin/model/ClassesTest.kt
@@ -182,12 +182,12 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class
"""
) {
with((this / "classes" / "Foo").cast<DClass>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(first()) {
dri.classNames equals "Deprecated"
params.entries counts 1
- (params["message"].assertNotNull("message") as StringValue).value equals "\"should no longer be used\""
+ (params["message"].assertNotNull("message") as StringValue).value equals "should no longer be used"
}
}
}
@@ -361,12 +361,12 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class
"""
) {
with((this / "classes" / "C").cast<DClass>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(first()) {
dri.classNames equals "SinceKotlin"
params.entries counts 1
- (params["version"].assertNotNull("version") as StringValue).value equals "\"1.1\""
+ (params["version"].assertNotNull("version") as StringValue).value equals "1.1"
}
}
}
@@ -426,9 +426,9 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class
"""@Suppress("abc") class Foo() {}"""
) {
with((this / "classes" / "Foo").cast<DClass>()) {
- with(extra[Annotations]?.content?.values?.firstOrNull()?.firstOrNull().assertNotNull("annotations")) {
+ with(extra[Annotations]?.directAnnotations?.values?.firstOrNull()?.firstOrNull().assertNotNull("annotations")) {
dri.toString() equals "kotlin/Suppress///PointingToDeclaration/"
- (params["names"].assertNotNull("param") as ArrayValue).value equals listOf(StringValue("\"abc\""))
+ (params["names"].assertNotNull("param") as ArrayValue).value equals listOf(StringValue("abc"))
}
}
}
@@ -446,7 +446,7 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class
"""
) {
with((this / "classes" / "throws").cast<DAnnotation>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(first()) {
dri.classNames equals "Retention"
diff --git a/plugins/base/src/test/kotlin/model/FunctionsTest.kt b/plugins/base/src/test/kotlin/model/FunctionsTest.kt
index 9fffb4fc..ac9b6d7d 100644
--- a/plugins/base/src/test/kotlin/model/FunctionsTest.kt
+++ b/plugins/base/src/test/kotlin/model/FunctionsTest.kt
@@ -141,12 +141,12 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun
"""
) {
with((this / "function" / "f").cast<DFunction>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(first()) {
dri.classNames equals "Suppress"
params.entries counts 1
- (params["names"].assertNotNull("param") as ArrayValue).value equals listOf(StringValue("\"FOO\""))
+ (params["names"].assertNotNull("param") as ArrayValue).value equals listOf(StringValue("FOO"))
}
}
}
@@ -226,7 +226,7 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun
"""
) {
with((this / "function" / "Fancy").cast<DAnnotation>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 3
with(map { it.dri.classNames to it }.toMap()) {
with(this["Target"].assertNotNull("Target")) {
@@ -249,7 +249,7 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun
}
with((this / "function" / "function" / "notInlined").cast<DParameter>()) {
- with(this.extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(this.extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(first()) {
dri.classNames equals "Fancy"
@@ -296,7 +296,7 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun
}
}
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 3
with(map { it.dri.classNames to it }.toMap()) {
with(this["Target"].assertNotNull("Target")) {
@@ -319,7 +319,7 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun
}
with((this / "function" / "f").cast<DFunction>()) {
- with(this.extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(this.extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(this.first()) {
dri.classNames equals "Fancy"
@@ -381,12 +381,12 @@ class FunctionTest : AbstractModelTest("/src/main/kotlin/function/Test.kt", "fun
"""
) {
with((this / "function" / "f").cast<DFunction>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(first()) {
dri.classNames equals "SinceKotlin"
params.entries counts 1
- (params["version"].assertNotNull("version") as StringValue).value equals "\"1.1\""
+ (params["version"].assertNotNull("version") as StringValue).value equals "1.1"
}
}
}
diff --git a/plugins/base/src/test/kotlin/model/JavaTest.kt b/plugins/base/src/test/kotlin/model/JavaTest.kt
index 18927218..beb7c8e4 100644
--- a/plugins/base/src/test/kotlin/model/JavaTest.kt
+++ b/plugins/base/src/test/kotlin/model/JavaTest.kt
@@ -274,7 +274,7 @@ class JavaTest : AbstractModelTest("/src/main/kotlin/java/Test.java", "java") {
"""
) {
with((this / "java" / "Attribute").cast<DAnnotation>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
with(single()) {
dri.classNames equals "Target"
(params["value"].assertNotNull("value") as ArrayValue).value equals listOf(
diff --git a/plugins/base/src/test/kotlin/model/PropertyTest.kt b/plugins/base/src/test/kotlin/model/PropertyTest.kt
index af952b43..8474116f 100644
--- a/plugins/base/src/test/kotlin/model/PropertyTest.kt
+++ b/plugins/base/src/test/kotlin/model/PropertyTest.kt
@@ -150,12 +150,12 @@ class PropertyTest : AbstractModelTest("/src/main/kotlin/property/Test.kt", "pro
"""
) {
with((this / "property" / "prop").cast<DProperty>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(first()) {
dri.classNames equals "SinceKotlin"
params.entries counts 1
- (params["version"].assertNotNull("version") as StringValue).value equals "\"1.1\""
+ (params["version"].assertNotNull("version") as StringValue).value equals "1.1"
}
}
}
@@ -178,7 +178,7 @@ class PropertyTest : AbstractModelTest("/src/main/kotlin/property/Test.kt", "pro
}
) {
with((this / "property" / "property").cast<DProperty>()) {
- with(extra[Annotations]!!.content.entries.single().value.assertNotNull("Annotations")) {
+ with(extra[Annotations]!!.directAnnotations.entries.single().value.assertNotNull("Annotations")) {
this counts 1
with(first()) {
dri.classNames equals "Strictfp"
diff --git a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt
index ba4b631f..f9d95f46 100644
--- a/plugins/base/src/test/kotlin/signatures/SignatureTest.kt
+++ b/plugins/base/src/test/kotlin/signatures/SignatureTest.kt
@@ -1,11 +1,7 @@
package signatures
-import org.jetbrains.dokka.DokkaConfiguration
import org.jetbrains.dokka.DokkaSourceSetID
-import org.jetbrains.dokka.jdk
import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
-import org.jsoup.Jsoup
-import org.jsoup.nodes.Element
import org.junit.jupiter.api.Test
import utils.*
@@ -295,7 +291,7 @@ class SignatureTest : BaseAbstractTest() {
.firstSignature()
.match(
Div(
- Div("@", A("Marking"), "(", Span("msg = ", Span("\"Nenya\"")), Wbr, ")"),
+ Div("@", A("Marking"), "(", Span("msg = ", Span("Nenya")), Wbr, ")"),
Div("@", A("Marking2"), "(", Span("int = ", Span("1")), Wbr, ")")
),
"fun ", A("simpleFun"),
@@ -332,9 +328,9 @@ class SignatureTest : BaseAbstractTest() {
Div(
"@", A("Marking"), "(", Span(
"msg = [",
- Span(Span("\"Nenya\""), ", "), Wbr,
- Span(Span("\"Vilya\""), ", "), Wbr,
- Span(Span("\"Narya\"")), Wbr, "]"
+ Span(Span("Nenya"), ", "), Wbr,
+ Span(Span("Vilya"), ", "), Wbr,
+ Span(Span("Narya")), Wbr, "]"
), Wbr, ")"
)
),