aboutsummaryrefslogtreecommitdiff
path: root/plugins/base/src/test/kotlin/transformers
diff options
context:
space:
mode:
authorMarcin Aman <marcin.aman@gmail.com>2021-03-01 13:50:17 +0100
committerGitHub <noreply@github.com>2021-03-01 13:50:17 +0100
commit7cf644f064868934fe8dcb46ab150f25fab8e8c8 (patch)
tree30d97e4cdaa6017401e7780bd86471f93d6f4d08 /plugins/base/src/test/kotlin/transformers
parentab853a866c40771e84a3235f40575efe04c435c5 (diff)
downloaddokka-7cf644f064868934fe8dcb46ab150f25fab8e8c8.tar.gz
dokka-7cf644f064868934fe8dcb46ab150f25fab8e8c8.tar.bz2
dokka-7cf644f064868934fe8dcb46ab150f25fab8e8c8.zip
Add ability to suppress obvious functions like equals, toString... (#1758)
* Add ability to suppress obvious functions like equals, toString... * Add ability to suppress obvious functions like equals, toString...
Diffstat (limited to 'plugins/base/src/test/kotlin/transformers')
-rw-r--r--plugins/base/src/test/kotlin/transformers/ObviousFunctionsDocumentableFilterTest.kt144
-rw-r--r--plugins/base/src/test/kotlin/transformers/SuppressTagFilterTest.kt14
2 files changed, 151 insertions, 7 deletions
diff --git a/plugins/base/src/test/kotlin/transformers/ObviousFunctionsDocumentableFilterTest.kt b/plugins/base/src/test/kotlin/transformers/ObviousFunctionsDocumentableFilterTest.kt
new file mode 100644
index 00000000..01641131
--- /dev/null
+++ b/plugins/base/src/test/kotlin/transformers/ObviousFunctionsDocumentableFilterTest.kt
@@ -0,0 +1,144 @@
+package transformers
+
+import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest
+import org.junit.jupiter.api.Test
+import kotlin.test.assertEquals
+
+class ObviousFunctionsDocumentableFilterTest : BaseAbstractTest() {
+ val suppressingConfiguration = dokkaConfiguration {
+ sourceSets {
+ sourceSet {
+ sourceRoots = listOf("src")
+ }
+ }
+ }
+
+ val nonSuppressingConfiguration = dokkaConfiguration {
+ suppressObviousFunctions = false
+ sourceSets {
+ sourceSet {
+ sourceRoots = listOf("src")
+ }
+ }
+ }
+
+ @Test
+ fun `should suppress toString, equals and hashcode`() {
+ testInline(
+ """
+ /src/suppressed/Suppressed.kt
+ package suppressed
+ data class Suppressed(val x: String)
+ """.trimIndent(),
+ suppressingConfiguration
+ ) {
+ preMergeDocumentablesTransformationStage = { modules ->
+ val functions = modules.flatMap { it.packages }.flatMap { it.classlikes }.flatMap { it.functions }
+ assertEquals(0, functions.size)
+ }
+ }
+ }
+
+ @Test
+ fun `should suppress toString, equals and hashcode in Java`() {
+ testInline(
+ """
+ /src/suppressed/Suppressed.java
+ package suppressed;
+ public class Suppressed {
+ }
+ """.trimIndent(),
+ suppressingConfiguration
+ ) {
+ preMergeDocumentablesTransformationStage = { modules ->
+ val functions = modules.flatMap { it.packages }.flatMap { it.classlikes }.flatMap { it.functions }
+ assertEquals(0, functions.size)
+ }
+ }
+ }
+
+ @Test
+ fun `should suppress toString, equals and hashcode but keep custom ones`() {
+ testInline(
+ """
+ /src/suppressed/Suppressed.kt
+ package suppressed
+ data class Suppressed(val x: String) {
+ override fun toString(): String {
+ return "custom"
+ }
+ }
+ """.trimIndent(),
+ suppressingConfiguration
+ ) {
+ preMergeDocumentablesTransformationStage = { modules ->
+ val functions = modules.flatMap { it.packages }.flatMap { it.classlikes }.flatMap { it.functions }
+ assertEquals(listOf("toString"), functions.map { it.name })
+ }
+ }
+ }
+
+ @Test
+ fun `should suppress toString, equals and hashcode but keep custom ones in Java`() {
+ testInline(
+ """
+ /src/suppressed/Suppressed.java
+ package suppressed;
+ public class Suppressed {
+ @Override
+ public String toString() {
+ return "";
+ }
+ }
+ """.trimIndent(),
+ suppressingConfiguration
+ ) {
+ preMergeDocumentablesTransformationStage = { modules ->
+ val functions = modules.flatMap { it.packages }.flatMap { it.classlikes }.flatMap { it.functions }
+ assertEquals(listOf("toString"), functions.map { it.name })
+ }
+ }
+ }
+
+ @Test
+ fun `should not suppress toString, equals and hashcode if custom config is provided`() {
+ testInline(
+ """
+ /src/suppressed/Suppressed.kt
+ package suppressed
+ data class Suppressed(val x: String)
+ """.trimIndent(),
+ nonSuppressingConfiguration
+ ) {
+ preMergeDocumentablesTransformationStage = { modules ->
+ val functions = modules.flatMap { it.packages }.flatMap { it.classlikes }.flatMap { it.functions }
+ assertEquals(
+ listOf("copy", "equals", "toString", "component1", "hashCode").sorted(),
+ functions.map { it.name }.sorted()
+ )
+ }
+ }
+ }
+
+ @Test
+ fun `should not suppress toString, equals and hashcode if custom config is provided in Java`() {
+ testInline(
+ """
+ /src/suppressed/Suppressed.java
+ package suppressed;
+ public class Suppressed {
+ }
+ """.trimIndent(),
+ nonSuppressingConfiguration
+ ) {
+ preMergeDocumentablesTransformationStage = { modules ->
+ val functions = modules.flatMap { it.packages }.flatMap { it.classlikes }.flatMap { it.functions }
+ //I would normally just assert names but this would make it JDK dependent, so this is better
+ assertEquals(
+ 5,
+ setOf("equals", "hashCode", "toString", "notify", "notifyAll").intersect(functions.map { it.name }).size
+ )
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/base/src/test/kotlin/transformers/SuppressTagFilterTest.kt b/plugins/base/src/test/kotlin/transformers/SuppressTagFilterTest.kt
index 268f934d..fb8f520e 100644
--- a/plugins/base/src/test/kotlin/transformers/SuppressTagFilterTest.kt
+++ b/plugins/base/src/test/kotlin/transformers/SuppressTagFilterTest.kt
@@ -34,7 +34,7 @@ class SuppressTagFilterTest : BaseAbstractTest() {
|class Suppressed
""".trimIndent(), configuration
) {
- documentablesFirstTransformationStep = { modules ->
+ preMergeDocumentablesTransformationStage = { modules ->
assertEquals(
"NotSuppressed",
modules.flatMap { it.packages }.flatMap { it.classlikes }.singleOrNull()?.name
@@ -57,7 +57,7 @@ class SuppressTagFilterTest : BaseAbstractTest() {
|}
""".trimIndent(), configuration
) {
- documentablesFirstTransformationStep = { modules ->
+ preMergeDocumentablesTransformationStage = { modules ->
assertNull(modules.flatMap { it.packages }.flatMap { it.classlikes }.flatMap { it.functions }
.firstOrNull { it.name == "suppressedFun" })
}
@@ -81,7 +81,7 @@ class SuppressTagFilterTest : BaseAbstractTest() {
|fun notSuppressedFun() { }
""".trimIndent(), configuration
) {
- documentablesFirstTransformationStep = { modules ->
+ preMergeDocumentablesTransformationStage = { modules ->
assertNull(modules.flatMap { it.packages }.flatMap { it.functions }
.firstOrNull { it.name == "suppressedFun" })
}
@@ -105,7 +105,7 @@ class SuppressTagFilterTest : BaseAbstractTest() {
|typealias notSuppressedTypeAlias = String
""".trimIndent(), configuration
) {
- documentablesFirstTransformationStep = { modules ->
+ preMergeDocumentablesTransformationStage = { modules ->
assertNull(modules.flatMap { it.packages }.flatMap { it.typealiases }
.firstOrNull { it.name == "suppressedTypeAlias" })
assertNotNull(modules.flatMap { it.packages }.flatMap { it.typealiases }
@@ -129,7 +129,7 @@ class SuppressTagFilterTest : BaseAbstractTest() {
|}
""".trimIndent(), configuration
) {
- documentablesFirstTransformationStep = { modules ->
+ preMergeDocumentablesTransformationStage = { modules ->
assertNull((modules.flatMap { it.packages }.flatMap { it.classlikes }
.firstOrNull { it.name == "Suppressed" } as? WithCompanion)?.companion)
}
@@ -152,7 +152,7 @@ class SuppressTagFilterTest : BaseAbstractTest() {
|}
""".trimIndent(), configuration
) {
- documentablesFirstTransformationStep = { modules ->
+ preMergeDocumentablesTransformationStage = { modules ->
val testingClass = modules.flatMap { it.packages }.flatMap { it.classlikes }.single()
assertNull(testingClass.classlikes.firstOrNull())
}
@@ -178,7 +178,7 @@ class SuppressTagFilterTest : BaseAbstractTest() {
|}
""".trimIndent(), configuration
) {
- documentablesFirstTransformationStep = { modules ->
+ preMergeDocumentablesTransformationStage = { modules ->
val testingClass = modules.flatMap { it.packages }.flatMap { it.classlikes }.single() as DEnum
assertEquals(listOf("NOT_SUPPRESSED"), testingClass.entries.map { it.name })
}