diff options
author | Marcin Aman <marcin.aman@gmail.com> | 2021-03-01 13:50:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-01 13:50:17 +0100 |
commit | 7cf644f064868934fe8dcb46ab150f25fab8e8c8 (patch) | |
tree | 30d97e4cdaa6017401e7780bd86471f93d6f4d08 /plugins/base/src/test/kotlin/transformers | |
parent | ab853a866c40771e84a3235f40575efe04c435c5 (diff) | |
download | dokka-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.kt | 144 | ||||
-rw-r--r-- | plugins/base/src/test/kotlin/transformers/SuppressTagFilterTest.kt | 14 |
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 }) } |