Skip to content

Commit

Permalink
Breaking change: Only support ktlint 1.x and upwards. Removal of expe…
Browse files Browse the repository at this point in the history
…rimental setting. (#286)
  • Loading branch information
vanniktech committed Nov 22, 2023
1 parent 269e6c5 commit 12c40a5
Show file tree
Hide file tree
Showing 9 changed files with 17 additions and 64 deletions.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,20 +239,18 @@ fun Project.addKtlint(rootProject: Project, extension: CodeQualityToolsPluginExt
configuration.isVisible = false

configuration.defaultDependencies {
it.add(dependencies.create("com.pinterest:ktlint:${extension.ktlint.toolVersion}"))
it.add(dependencies.create("com.pinterest.ktlint:ktlint-cli:${extension.ktlint.toolVersion}"))
}
}

tasks.register(ktlint, KtLintTask::class.java) { task ->
task.experimental = extension.ktlint.experimental
task.version = extension.ktlint.toolVersion
task.classpath.from(ktlintConfiguration)
task.outputDirectory = File(buildDir, "reports/ktlint/")
task.inputs.files(kotlinFiles(), rootProject.editorconfigFile())
}

tasks.register("ktlintFormat", KtLintFormatTask::class.java) { task ->
task.experimental = extension.ktlint.experimental
task.version = extension.ktlint.toolVersion
task.classpath.from(ktlintConfiguration)
task.outputDirectory = File(buildDir, "reports/ktlint/")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ open class DetektExtension {
var config: String = "code_quality_tools/detekt.yml"

/**
* Optional baseline file. If one is present it will be used in the detektCheck task.
* If this name is specified however the file is not present it will be generated.
* Optional baseline file.
* If one is present, it will be used in the detektCheck task.
* If this name is specified, however, the file is not present it will be generated.
* This mirrors the baseline mechanism from Android Lint.
*
* @since 0.11.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.vanniktech.code.quality.tools
import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.Classpath
import org.gradle.api.tasks.Input
Expand All @@ -17,7 +16,6 @@ import java.io.File
import javax.inject.Inject

@CacheableTask abstract class KtLintFormatTask : DefaultTask() {
@Input var experimental: Boolean = false
@Input lateinit var version: String
@get:Classpath abstract val classpath: ConfigurableFileCollection
@OutputDirectory lateinit var outputDirectory: File
Expand All @@ -34,15 +32,13 @@ import javax.inject.Inject

queue.submit(KtLintFormatWorker::class.java) {
it.classpath.from(classpath)
it.experimental.set(experimental)
it.outputDirectory.set(outputDirectory)
}
}
}

internal interface KtLintFormatParameters : WorkParameters {
val classpath: ConfigurableFileCollection
val experimental: Property<Boolean>
val outputDirectory: RegularFileProperty
}

Expand All @@ -54,10 +50,6 @@ internal abstract class KtLintFormatWorker @Inject internal constructor(
task.mainClass.set("com.pinterest.ktlint.Main")
task.classpath = parameters.classpath

if (parameters.experimental.get()) {
task.args("--experimental")
}

// Required for JDK 16 or later.
// https://github.com/pinterest/ktlint/issues/1195#issuecomment-1009027802
task.jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.vanniktech.code.quality.tools
import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.Classpath
import org.gradle.api.tasks.Input
Expand All @@ -17,7 +16,6 @@ import java.io.File
import javax.inject.Inject

@CacheableTask abstract class KtLintTask : DefaultTask() {
@Input var experimental: Boolean = false
@Input lateinit var version: String
@get:Classpath abstract val classpath: ConfigurableFileCollection
@OutputDirectory lateinit var outputDirectory: File
Expand All @@ -34,15 +32,13 @@ import javax.inject.Inject

queue.submit(KtLintWorker::class.java) {
it.classpath.from(classpath)
it.experimental.set(experimental)
it.outputDirectory.set(outputDirectory)
}
}
}

internal interface KtLintParameters : WorkParameters {
val classpath: ConfigurableFileCollection
val experimental: Property<Boolean>
val outputDirectory: RegularFileProperty
}

Expand All @@ -54,10 +50,6 @@ internal abstract class KtLintWorker @Inject internal constructor(
task.mainClass.set("com.pinterest.ktlint.Main")
task.classpath = parameters.classpath

if (parameters.experimental.get()) {
task.args("--experimental")
}

task.args(
"--reporter=plain",
"--reporter=checkstyle,output=${File(parameters.outputDirectory.asFile.get(), "ktlint-checkstyle-report.xml")}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,5 @@ open class KtlintExtension {
var enabled: Boolean = true

/** @since 0.5.0 */
var toolVersion: String = "0.32.0"

/**
* Ability to enable or disable the experimental rules for ktlint. Requires ktlint 0.31.0 or later.
* @since 0.18.0
*/
var experimental: Boolean = false
var toolVersion: String = "1.0.1"
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ open class PmdExtension {
var ruleSetFile: String = "code_quality_tools/pmd.xml"

/**
* If set to false or true it overrides {@link CodeQualityToolsPluginExtension#failEarly}.
* If set to false or true, it overrides {@link CodeQualityToolsPluginExtension#failEarly}.
* @since 0.3.0
*/
var ignoreFailures: Boolean? = null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class CodeQualityToolsPluginExtensionTest {
assertEquals(false, extension.textReports)

assertEquals("1.0.0", extension.detekt.toolVersion)
assertEquals("0.32.0", extension.ktlint.toolVersion)
assertEquals("1.0.1", extension.ktlint.toolVersion)
assertEquals("8.6", extension.checkstyle.toolVersion)
assertEquals("6.0.0", extension.pmd.toolVersion)

Expand Down Expand Up @@ -63,7 +63,5 @@ class CodeQualityToolsPluginExtensionTest {
assertEquals(true, extension.detekt.failFast)

assertEquals(true, extension.kotlin.allWarningsAsErrors)

assertEquals(false, extension.ktlint.experimental)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,6 @@ class CodeQualityToolsPluginKtlintTest {
.succeeds()
}

@Test fun successVersion0320() {
Roboter(testProjectDir, version = "0.32.0")
.withKotlinFile("src/main/kotlin/com/vanniktech/test/Foo.kt", "fun foo(param: Int) = param * param\n")
.succeeds()
}

@Test fun configuration() {
Roboter(testProjectDir)
.withConfiguration(
Expand All @@ -48,19 +42,6 @@ class CodeQualityToolsPluginKtlintTest {
.hasKotlinFile("src/main/kotlin/com/vanniktech/test/Foo.kt", "fun foo(param: Int) = param * param\n")
}

@Test fun autoFormatVersion0320() {
Roboter(testProjectDir, version = "0.32.0")
.withConfiguration(
"""
|[*.{kt,kts}]
|insert_final_newline=true
""".trimMargin(),
)
.withKotlinFile("src/main/kotlin/com/vanniktech/test/Foo.kt", "fun foo(param: Int) = param * param")
.succeeds(taskToRun = "ktlintFormat")
.hasKotlinFile("src/main/kotlin/com/vanniktech/test/Foo.kt", "fun foo(param: Int) = param * param\n")
}

@Test fun noSrcFolder() {
Roboter(testProjectDir)
.succeeds()
Expand All @@ -72,14 +53,13 @@ class CodeQualityToolsPluginKtlintTest {
.fails(containsMessage = "src/main/kotlin/com/vanniktech/test/Foo.kt:1:9: Unexpected spacing after \"(\"")
}

@Test fun failsVersion0320() {
Roboter(testProjectDir, version = "0.32.0")
.withKotlinFile("src/main/kotlin/com/vanniktech/test/Foo.kt", "fun foo( ) = Unit")
.fails(containsMessage = "src/main/kotlin/com/vanniktech/test/Foo.kt:1:9: Unexpected spacing after \"(\"")
}

@Test fun experimental() {
Roboter(testProjectDir, experimental = true)
Roboter(testProjectDir)
.withConfiguration(
"""
|ktlint_experimental = enabled
""".trimMargin(),
)
.withKotlinFile("src/main/kotlin/com/vanniktech/test/Foo.kt", "fun foo() =\n Unit")
.fails(containsMessage = "src/main/kotlin/com/vanniktech/test/Foo.kt:2:1: Unexpected indentation (3) (should be 4)")
}
Expand All @@ -91,13 +71,13 @@ class CodeQualityToolsPluginKtlintTest {
}

@Test fun failsOnKotlinScript() {
Roboter(testProjectDir, version = "0.32.0")
Roboter(testProjectDir)
.withKotlinFile("build.gradle.kts", "fun foo( ) = Unit")
.fails(containsMessage = "build.gradle.kts:1:9: Unexpected spacing after \"(\"")
}

@Test fun autoCorrectKotlinScript() {
Roboter(testProjectDir, version = "0.32.0")
Roboter(testProjectDir)
.withKotlinFile("script.kts", "fun foo(param : Int) = param * param\n")
.succeeds(taskToRun = "ktlintFormat")
.hasKotlinFile("script.kts", "fun foo(param: Int) = param * param\n")
Expand All @@ -118,8 +98,7 @@ class CodeQualityToolsPluginKtlintTest {
class Roboter(
private val directory: TemporaryFolder,
enabled: Boolean = true,
version: String = "0.44.0",
experimental: Boolean = false,
version: String = "1.0.1",
) {
init {
directory.newFile("build.gradle").writeText(
Expand All @@ -133,7 +112,6 @@ class CodeQualityToolsPluginKtlintTest {
| ktlint {
| enabled = $enabled
| toolVersion = "$version"
| experimental = $experimental
| }
| detekt.enabled = false
| checkstyle.enabled = false
Expand Down

0 comments on commit 12c40a5

Please sign in to comment.