Skip to content

Commit

Permalink
Add tests for missing rules in a ruleset (#477)
Browse files Browse the repository at this point in the history
  • Loading branch information
Roman Zavarnitsyn authored and shashachu committed Jul 5, 2019
1 parent 9b8ead8 commit 657299b
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.pinterest.ktlint.ruleset.experimental

import com.pinterest.ktlint.test.RuleSetProviderTest

class ExperimentalRuleSetProviderTest : RuleSetProviderTest(
rulesetClass = ExperimentalRuleSetProvider::class.java,
packageName = "com.pinterest.ktlint.ruleset.experimental"
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.pinterest.ktlint.ruleset.standard

import com.pinterest.ktlint.test.RuleSetProviderTest

class StandardRuleSetProviderTest : RuleSetProviderTest(
rulesetClass = StandardRuleSetProvider::class.java,
packageName = "com.pinterest.ktlint.ruleset.standard"
)
1 change: 1 addition & 0 deletions ktlint-test/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ dependencies {
implementation deps.kotlin.stdlib
implementation deps.kotlin.compiler
implementation deps.assertj
implementation deps.junit
}
5 changes: 5 additions & 0 deletions ktlint-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.pinterest.ktlint.test

import com.pinterest.ktlint.core.RuleSetProvider
import java.io.File
import org.assertj.core.api.Assertions.assertThat
import org.junit.Test

open class RuleSetProviderTest(
private val rulesetClass: Class<out RuleSetProvider>,
private val packageName: String
) {

@Test
fun checkAllRulesProvided() {
val srcLocation = rulesetClass.protectionDomain.codeSource.location.path
val rulesDir = File(srcLocation + packageName.replace(".", "/"))
val packageRules = rulesDir.listFiles()
?.map { it.name.removeSuffix(".class") }
?.filter { it.endsWith("Rule") }
?: arrayListOf()

val provider = rulesetClass
val providerRules = provider.newInstance().get().rules.map { it::class.java.simpleName }
val diff = packageRules - providerRules
assertThat(diff)
.withFailMessage("%s is missing to provide the following rules: \n%s", provider.simpleName, diff.joinToString(separator = "\n"))
.hasSize(0)
}
}

0 comments on commit 657299b

Please sign in to comment.