From cc57075a7ffc619f6f44ac0d453d4444455a5185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Kwiecin=CC=81ski?= Date: Mon, 27 Jun 2022 20:14:45 +0200 Subject: [PATCH 1/3] Add failing test --- .../kotlinter/functional/EditorConfigTest.kt | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt b/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt index 1215d979..85aa4fee 100644 --- a/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt +++ b/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt @@ -1,6 +1,7 @@ package org.jmailen.gradle.kotlinter.functional import org.gradle.testkit.runner.TaskOutcome +import org.jmailen.gradle.kotlinter.functional.utils.editorConfig import org.jmailen.gradle.kotlinter.functional.utils.kotlinClass import org.jmailen.gradle.kotlinter.functional.utils.resolve import org.jmailen.gradle.kotlinter.functional.utils.settingsFile @@ -71,7 +72,7 @@ internal class EditorConfigTest : WithGradleTest.Kotlin() { } @Test - fun `plugin respects 'indent_size' set in editorconfig`() { + fun `plugin respects 'indent_size' set in editorconfig`() { projectRoot.resolve(".editorconfig") { appendText( """ @@ -99,4 +100,30 @@ internal class EditorConfigTest : WithGradleTest.Kotlin() { assertTrue(output.contains("[indent] Unexpected indentation (2) (should be 6)")) } } + @Test + fun `editorconfig changes are taken into account on task re-runs`() { + projectRoot.resolve(".editorconfig") { + writeText(editorConfig) + } + + projectRoot.resolve("src/main/kotlin/FileName.kt") { + writeText(kotlinClass("DifferentClassName")) + } + buildAndFail("lintKotlin").apply { + assertEquals(TaskOutcome.FAILED, task(":lintKotlinMain")?.outcome) + assertTrue(output.contains("[filename] File 'FileName.kt' contains a single top level declaration")) + } + + projectRoot.resolve(".editorconfig") { + writeText( + """ + [*.{kt,kts}] + disabled_rules=filename + """.trimIndent(), + ) + } + build("lintKotlin").apply { + assertEquals(TaskOutcome.SUCCESS, task(":lintKotlinMain")?.outcome) + } + } } From 56f006904f86bfc1221ea1b492c053e65b815506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Kwiecin=CC=81ski?= Date: Mon, 27 Jun 2022 20:47:46 +0200 Subject: [PATCH 2/3] Clear ktlint caches when `.editorconfig` changes --- .../kotlinter/support/EditorConfigUtils.kt | 13 +++++ .../kotlinter/tasks/ConfigurableKtLintTask.kt | 6 ++ .../gradle/kotlinter/tasks/FormatTask.kt | 4 +- .../gradle/kotlinter/tasks/LintTask.kt | 4 +- .../tasks/format/FormatWorkerAction.kt | 6 ++ .../tasks/format/FormatWorkerParameters.kt | 1 + .../kotlinter/tasks/lint/LintWorkerAction.kt | 5 ++ .../tasks/lint/LintWorkerParameters.kt | 1 + .../kotlinter/functional/EditorConfigTest.kt | 56 +++++++++++++++++-- 9 files changed, 88 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/support/EditorConfigUtils.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/support/EditorConfigUtils.kt index f78e559e..72052555 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/support/EditorConfigUtils.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/support/EditorConfigUtils.kt @@ -1,8 +1,11 @@ package org.jmailen.gradle.kotlinter.support +import com.pinterest.ktlint.core.KtLint import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties import com.pinterest.ktlint.core.api.EditorConfigOverride import org.gradle.api.file.ProjectLayout +import org.gradle.api.logging.Logger +import org.gradle.api.provider.Property import java.io.File internal fun editorConfigOverride(ktLintParams: KtLintParams): EditorConfigOverride { @@ -15,6 +18,16 @@ internal fun editorConfigOverride(ktLintParams: KtLintParams): EditorConfigOverr } } +internal fun resetEditorconfigCacheIfNeeded( + wasEditorConfigChanged: Property, + logger: Logger, +) { + if (wasEditorConfigChanged.get()) { + logger.info("Editorconfig changed, resetting KtLint caches") + KtLint.trimMemory() // Calling trimMemory() will also reset internal loaded `.editorconfig` cache + } +} + internal fun ProjectLayout.findApplicableEditorConfigFiles(): Sequence { val projectEditorConfig = projectDirectory.file(".editorconfig").asFile diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/ConfigurableKtLintTask.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/ConfigurableKtLintTask.kt index 716b19f0..898ac388 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/ConfigurableKtLintTask.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/ConfigurableKtLintTask.kt @@ -13,6 +13,8 @@ import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.SourceTask import org.gradle.internal.exceptions.MultiCauseException +import org.gradle.work.Incremental +import org.gradle.work.InputChanges import org.jmailen.gradle.kotlinter.KotlinterExtension.Companion.DEFAULT_DISABLED_RULES import org.jmailen.gradle.kotlinter.KotlinterExtension.Companion.DEFAULT_EXPERIMENTAL_RULES import org.jmailen.gradle.kotlinter.support.KtLintParams @@ -31,6 +33,7 @@ abstract class ConfigurableKtLintTask( @get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) + @get:Incremental internal val editorconfigFiles: FileCollection = objectFactory.fileCollection().apply { from(projectLayout.findApplicableEditorConfigFiles().toList()) } @@ -40,6 +43,9 @@ abstract class ConfigurableKtLintTask( experimentalRules = experimentalRules.get(), disabledRules = disabledRules.get(), ) + + protected fun wasEditorconfigChanged(inputChanges: InputChanges) = + inputChanges.isIncremental && inputChanges.getFileChanges(editorconfigFiles).any() } internal inline fun ObjectFactory.property(default: T? = null): Property = diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/FormatTask.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/FormatTask.kt index cae4f0c6..d65c9375 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/FormatTask.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/FormatTask.kt @@ -7,6 +7,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.Optional import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction +import org.gradle.work.InputChanges import org.gradle.workers.WorkerExecutor import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty import org.jmailen.gradle.kotlinter.support.KotlinterError @@ -31,7 +32,7 @@ open class FormatTask @Inject constructor( } @TaskAction - fun run() { + fun run(inputChanges: InputChanges) { val result = with(workerExecutor.noIsolation()) { submit(FormatWorkerAction::class.java) { p -> p.name.set(name) @@ -39,6 +40,7 @@ open class FormatTask @Inject constructor( p.projectDirectory.set(projectLayout.projectDirectory.asFile) p.ktLintParams.set(getKtLintParams()) p.output.set(report) + p.wasEditorConfigChanged.set(wasEditorconfigChanged(inputChanges)) } runCatching { await() } } diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/LintTask.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/LintTask.kt index c0aa674d..edd26171 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/LintTask.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/LintTask.kt @@ -13,6 +13,7 @@ import org.gradle.api.tasks.OutputFiles import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.TaskAction +import org.gradle.work.InputChanges import org.gradle.workers.WorkerExecutor import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty import org.jmailen.gradle.kotlinter.KotlinterExtension.Companion.DEFAULT_IGNORE_FAILURES @@ -43,7 +44,7 @@ open class LintTask @Inject constructor( val ignoreFailures: Property = objectFactory.property(default = DEFAULT_IGNORE_FAILURES) @TaskAction - fun run() { + fun run(inputChanges: InputChanges) { val result = with(workerExecutor.noIsolation()) { submit(LintWorkerAction::class.java) { p -> p.name.set(name) @@ -51,6 +52,7 @@ open class LintTask @Inject constructor( p.projectDirectory.set(projectLayout.projectDirectory.asFile) p.reporters.putAll(reports) p.ktLintParams.set(getKtLintParams()) + p.wasEditorConfigChanged.set(wasEditorconfigChanged(inputChanges)) } runCatching { await() } } diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerAction.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerAction.kt index cbde073f..c5f62aee 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerAction.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerAction.kt @@ -13,6 +13,7 @@ import org.jmailen.gradle.kotlinter.support.KtLintParams import org.jmailen.gradle.kotlinter.support.defaultRuleSetProviders import org.jmailen.gradle.kotlinter.support.editorConfigOverride import org.jmailen.gradle.kotlinter.support.resolveRuleProviders +import org.jmailen.gradle.kotlinter.support.resetEditorconfigCacheIfNeeded import org.jmailen.gradle.kotlinter.tasks.FormatTask import java.io.File @@ -25,6 +26,11 @@ abstract class FormatWorkerAction : WorkAction { private val output: File? = parameters.output.asFile.orNull override fun execute() { + resetEditorconfigCacheIfNeeded( + wasEditorConfigChanged = parameters.wasEditorConfigChanged, + logger = logger, + ) + val fixes = mutableListOf() try { files.forEach { file -> diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerParameters.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerParameters.kt index 684b1c2e..3f02d1c3 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerParameters.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerParameters.kt @@ -8,6 +8,7 @@ import org.jmailen.gradle.kotlinter.support.KtLintParams interface FormatWorkerParameters : WorkParameters { val name: Property + val wasEditorConfigChanged: Property val files: ConfigurableFileCollection val projectDirectory: RegularFileProperty val ktLintParams: Property diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerAction.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerAction.kt index 9cd2ce0a..b5781606 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerAction.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerAction.kt @@ -16,6 +16,7 @@ import org.jmailen.gradle.kotlinter.support.editorConfigOverride import org.jmailen.gradle.kotlinter.support.reporterFor import org.jmailen.gradle.kotlinter.support.reporterPathFor import org.jmailen.gradle.kotlinter.support.resolveRuleProviders +import org.jmailen.gradle.kotlinter.support.resetEditorconfigCacheIfNeeded import org.jmailen.gradle.kotlinter.tasks.LintTask import java.io.File @@ -30,6 +31,10 @@ abstract class LintWorkerAction : WorkAction { private val ktLintParams: KtLintParams = parameters.ktLintParams.get() override fun execute() { + resetEditorconfigCacheIfNeeded( + wasEditorConfigChanged = parameters.wasEditorConfigChanged, + logger = logger, + ) var hasError = false try { diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerParameters.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerParameters.kt index cd7def3b..2fd74e94 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerParameters.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerParameters.kt @@ -10,6 +10,7 @@ import java.io.File interface LintWorkerParameters : WorkParameters { val name: Property + val wasEditorConfigChanged: Property val files: ConfigurableFileCollection val projectDirectory: RegularFileProperty val reporters: MapProperty diff --git a/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt b/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt index 85aa4fee..d1fb082e 100644 --- a/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt +++ b/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt @@ -6,6 +6,7 @@ import org.jmailen.gradle.kotlinter.functional.utils.kotlinClass import org.jmailen.gradle.kotlinter.functional.utils.resolve import org.jmailen.gradle.kotlinter.functional.utils.settingsFile import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test @@ -100,18 +101,59 @@ internal class EditorConfigTest : WithGradleTest.Kotlin() { assertTrue(output.contains("[indent] Unexpected indentation (2) (should be 6)")) } } + @Test - fun `editorconfig changes are taken into account on task re-runs`() { + fun `editorconfig changes are taken into account on lint task re-runs`() { projectRoot.resolve(".editorconfig") { - writeText(editorConfig) + writeText( + """ + [*.{kt,kts}] + disabled_rules=filename + """.trimIndent(), + ) } - projectRoot.resolve("src/main/kotlin/FileName.kt") { writeText(kotlinClass("DifferentClassName")) } - buildAndFail("lintKotlin").apply { + build("lintKotlin").apply { + assertEquals(TaskOutcome.SUCCESS, task(":lintKotlinMain")?.outcome) + assertFalse(output.contains("resetting KtLint caches")) + } + + projectRoot.resolve(".editorconfig") { + writeText(editorConfig) + } + buildAndFail("lintKotlin", "--info").apply { assertEquals(TaskOutcome.FAILED, task(":lintKotlinMain")?.outcome) assertTrue(output.contains("[filename] File 'FileName.kt' contains a single top level declaration")) + assertTrue(output.contains("resetting KtLint caches")) + } + + projectRoot.resolve("src/main/kotlin/FileName.kt") { + writeText(kotlinClass("FileName")) + } + build("lintKotlin").apply { + assertEquals(TaskOutcome.SUCCESS, task(":lintKotlinMain")?.outcome) + assertFalse(output.contains("resetting KtLint caches")) + } + build("lintKotlin").apply { + assertEquals(TaskOutcome.UP_TO_DATE, task(":lintKotlinMain")?.outcome) + assertFalse(output.contains("resetting KtLint caches")) + } + } + + @Test + fun `editorconfig changes are ignored for format task re-runs`() { + projectRoot.resolve(".editorconfig") { + writeText(editorConfig) + } + + projectRoot.resolve("src/main/kotlin/FileName.kt") { + writeText(kotlinClass("DifferentClassName")) + } + build("formatKotlin").apply { + assertEquals(TaskOutcome.SUCCESS, task(":formatKotlinMain")?.outcome) + assertTrue(output.contains("Format could not fix > [filename] File 'FileName.kt' contains a single top level declaration")) } projectRoot.resolve(".editorconfig") { @@ -122,8 +164,10 @@ internal class EditorConfigTest : WithGradleTest.Kotlin() { """.trimIndent(), ) } - build("lintKotlin").apply { - assertEquals(TaskOutcome.SUCCESS, task(":lintKotlinMain")?.outcome) + build("formatKotlin", "--info").apply { + assertEquals(TaskOutcome.SUCCESS, task(":formatKotlinMain")?.outcome) + assertTrue(output.contains("Format could not fix")) + assertFalse(output.contains("resetting KtLint caches")) } } } From 0c897be48953a8811851c51e0d63d0f354f9846e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Kwiecin=CC=81ski?= Date: Mon, 5 Sep 2022 10:44:01 +0300 Subject: [PATCH 3/3] Switch to new `ktlint` 0.37.0 `reloadEditorConfigFile` api --- .../gradle/kotlinter/support/EditorConfigUtils.kt | 9 +++++---- .../gradle/kotlinter/tasks/ConfigurableKtLintTask.kt | 9 +++++++-- .../org/jmailen/gradle/kotlinter/tasks/FormatTask.kt | 2 +- .../org/jmailen/gradle/kotlinter/tasks/LintTask.kt | 2 +- .../kotlinter/tasks/format/FormatWorkerAction.kt | 4 ++-- .../kotlinter/tasks/format/FormatWorkerParameters.kt | 2 +- .../gradle/kotlinter/tasks/lint/LintWorkerAction.kt | 4 ++-- .../kotlinter/tasks/lint/LintWorkerParameters.kt | 2 +- .../gradle/kotlinter/functional/EditorConfigTest.kt | 10 +++++++--- 9 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/support/EditorConfigUtils.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/support/EditorConfigUtils.kt index 72052555..a415f1cb 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/support/EditorConfigUtils.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/support/EditorConfigUtils.kt @@ -3,9 +3,9 @@ package org.jmailen.gradle.kotlinter.support import com.pinterest.ktlint.core.KtLint import com.pinterest.ktlint.core.api.DefaultEditorConfigProperties import com.pinterest.ktlint.core.api.EditorConfigOverride +import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.ProjectLayout import org.gradle.api.logging.Logger -import org.gradle.api.provider.Property import java.io.File internal fun editorConfigOverride(ktLintParams: KtLintParams): EditorConfigOverride { @@ -19,12 +19,13 @@ internal fun editorConfigOverride(ktLintParams: KtLintParams): EditorConfigOverr } internal fun resetEditorconfigCacheIfNeeded( - wasEditorConfigChanged: Property, + changedEditorconfigFiles: ConfigurableFileCollection, logger: Logger, ) { - if (wasEditorConfigChanged.get()) { + val changedFiles = changedEditorconfigFiles.files + if (changedFiles.any()) { logger.info("Editorconfig changed, resetting KtLint caches") - KtLint.trimMemory() // Calling trimMemory() will also reset internal loaded `.editorconfig` cache + changedFiles.map(File::toPath).forEach(KtLint::reloadEditorConfigFile) } } diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/ConfigurableKtLintTask.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/ConfigurableKtLintTask.kt index 898ac388..f8b46c35 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/ConfigurableKtLintTask.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/ConfigurableKtLintTask.kt @@ -13,6 +13,7 @@ import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.SourceTask import org.gradle.internal.exceptions.MultiCauseException +import org.gradle.work.FileChange import org.gradle.work.Incremental import org.gradle.work.InputChanges import org.jmailen.gradle.kotlinter.KotlinterExtension.Companion.DEFAULT_DISABLED_RULES @@ -44,8 +45,12 @@ abstract class ConfigurableKtLintTask( disabledRules = disabledRules.get(), ) - protected fun wasEditorconfigChanged(inputChanges: InputChanges) = - inputChanges.isIncremental && inputChanges.getFileChanges(editorconfigFiles).any() + protected fun getChangedEditorconfigFiles(inputChanges: InputChanges) = + if (inputChanges.isIncremental) { + inputChanges.getFileChanges(editorconfigFiles).map(FileChange::getFile) + } else { + emptyList() + } } internal inline fun ObjectFactory.property(default: T? = null): Property = diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/FormatTask.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/FormatTask.kt index d65c9375..53ba5c2d 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/FormatTask.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/FormatTask.kt @@ -40,7 +40,7 @@ open class FormatTask @Inject constructor( p.projectDirectory.set(projectLayout.projectDirectory.asFile) p.ktLintParams.set(getKtLintParams()) p.output.set(report) - p.wasEditorConfigChanged.set(wasEditorconfigChanged(inputChanges)) + p.changedEditorConfigFiles.from(getChangedEditorconfigFiles(inputChanges)) } runCatching { await() } } diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/LintTask.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/LintTask.kt index edd26171..ba03305b 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/LintTask.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/LintTask.kt @@ -52,7 +52,7 @@ open class LintTask @Inject constructor( p.projectDirectory.set(projectLayout.projectDirectory.asFile) p.reporters.putAll(reports) p.ktLintParams.set(getKtLintParams()) - p.wasEditorConfigChanged.set(wasEditorconfigChanged(inputChanges)) + p.changedEditorconfigFiles.from(getChangedEditorconfigFiles(inputChanges)) } runCatching { await() } } diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerAction.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerAction.kt index c5f62aee..5b411fa6 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerAction.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerAction.kt @@ -12,8 +12,8 @@ import org.jmailen.gradle.kotlinter.support.KotlinterError import org.jmailen.gradle.kotlinter.support.KtLintParams import org.jmailen.gradle.kotlinter.support.defaultRuleSetProviders import org.jmailen.gradle.kotlinter.support.editorConfigOverride -import org.jmailen.gradle.kotlinter.support.resolveRuleProviders import org.jmailen.gradle.kotlinter.support.resetEditorconfigCacheIfNeeded +import org.jmailen.gradle.kotlinter.support.resolveRuleProviders import org.jmailen.gradle.kotlinter.tasks.FormatTask import java.io.File @@ -27,7 +27,7 @@ abstract class FormatWorkerAction : WorkAction { override fun execute() { resetEditorconfigCacheIfNeeded( - wasEditorConfigChanged = parameters.wasEditorConfigChanged, + changedEditorconfigFiles = parameters.changedEditorConfigFiles, logger = logger, ) diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerParameters.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerParameters.kt index 3f02d1c3..d8a4b64b 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerParameters.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/format/FormatWorkerParameters.kt @@ -8,7 +8,7 @@ import org.jmailen.gradle.kotlinter.support.KtLintParams interface FormatWorkerParameters : WorkParameters { val name: Property - val wasEditorConfigChanged: Property + val changedEditorConfigFiles: ConfigurableFileCollection val files: ConfigurableFileCollection val projectDirectory: RegularFileProperty val ktLintParams: Property diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerAction.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerAction.kt index b5781606..914792a0 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerAction.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerAction.kt @@ -15,8 +15,8 @@ import org.jmailen.gradle.kotlinter.support.defaultRuleSetProviders import org.jmailen.gradle.kotlinter.support.editorConfigOverride import org.jmailen.gradle.kotlinter.support.reporterFor import org.jmailen.gradle.kotlinter.support.reporterPathFor -import org.jmailen.gradle.kotlinter.support.resolveRuleProviders import org.jmailen.gradle.kotlinter.support.resetEditorconfigCacheIfNeeded +import org.jmailen.gradle.kotlinter.support.resolveRuleProviders import org.jmailen.gradle.kotlinter.tasks.LintTask import java.io.File @@ -32,7 +32,7 @@ abstract class LintWorkerAction : WorkAction { override fun execute() { resetEditorconfigCacheIfNeeded( - wasEditorConfigChanged = parameters.wasEditorConfigChanged, + changedEditorconfigFiles = parameters.changedEditorconfigFiles, logger = logger, ) var hasError = false diff --git a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerParameters.kt b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerParameters.kt index 2fd74e94..82b375b8 100644 --- a/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerParameters.kt +++ b/src/main/kotlin/org/jmailen/gradle/kotlinter/tasks/lint/LintWorkerParameters.kt @@ -10,7 +10,7 @@ import java.io.File interface LintWorkerParameters : WorkParameters { val name: Property - val wasEditorConfigChanged: Property + val changedEditorconfigFiles: ConfigurableFileCollection val files: ConfigurableFileCollection val projectDirectory: RegularFileProperty val reporters: MapProperty diff --git a/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt b/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt index d1fb082e..0bac4dcf 100644 --- a/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt +++ b/src/test/kotlin/org/jmailen/gradle/kotlinter/functional/EditorConfigTest.kt @@ -57,9 +57,10 @@ internal class EditorConfigTest : WithGradleTest.Kotlin() { fun `plugin respects disabled_rules set in editorconfig`() { projectRoot.resolve(".editorconfig") { appendText( + // language=editorconfig """ [*.{kt,kts}] - disabled_rules=filename + ktlint_disabled_rules = filename """.trimIndent(), ) } @@ -76,6 +77,7 @@ internal class EditorConfigTest : WithGradleTest.Kotlin() { fun `plugin respects 'indent_size' set in editorconfig`() { projectRoot.resolve(".editorconfig") { appendText( + // language=editorconfig """ [*.{kt,kts}] indent_size = 6 @@ -106,9 +108,10 @@ internal class EditorConfigTest : WithGradleTest.Kotlin() { fun `editorconfig changes are taken into account on lint task re-runs`() { projectRoot.resolve(".editorconfig") { writeText( + // language=editorconfig """ [*.{kt,kts}] - disabled_rules=filename + ktlint_disabled_rules = filename """.trimIndent(), ) } @@ -158,9 +161,10 @@ internal class EditorConfigTest : WithGradleTest.Kotlin() { projectRoot.resolve(".editorconfig") { writeText( + // language=editorconfig """ [*.{kt,kts}] - disabled_rules=filename + ktlint_disabled_rules = filename """.trimIndent(), ) }