From 4c969c624f31ad5a628cc5fbe9dae4a2c07772fb Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sat, 11 Dec 2021 18:18:04 +0100 Subject: [PATCH 01/20] Add separate verification build step to include experimental rules Ktlint should apply the dogfooding principal and only provide experimental rules that at least on the ktlint code base itself gives satisfiable results. Initially all experimental rules that cause violations have been disabled, so that a separate commit can be created to enable each specific rule. --- .editorconfig | 1 + build.gradle | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/.editorconfig b/.editorconfig index f03e9f62e8..3caaefa279 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,6 +15,7 @@ indent_size = 4 [*.{kt,kts}] ij_kotlin_imports_layout=* +disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping,experimental:annotation,experimental:no-empty-first-line-in-method-block,experimental:spacing-between-declarations-with-comments [{Makefile,*.go}] indent_style = tab diff --git a/build.gradle b/build.gradle index 54ff1c5740..56a5e28bec 100644 --- a/build.gradle +++ b/build.gradle @@ -48,6 +48,13 @@ task ktlint(type: JavaExec, group: LifecycleBasePlugin.VERIFICATION_GROUP) { args '**/src/**/*.kt', '--baseline=ktlint-baseline.xml', '--verbose' } +task ktlint_experimental(type: JavaExec, group: LifecycleBasePlugin.VERIFICATION_GROUP) { + description = "Check Kotlin code style with experimental rules." + classpath = configurations.ktlint + main = 'com.pinterest.ktlint.Main' + args '**/src/**/*.kt', '--baseline=ktlint-baseline.xml', '--verbose', '--experimental' +} + /** * Configures "wrapper" task to use specific Gradle version and distribution type. */ From 9bdfb9af8f0c6fb88bfe073c5c50980a551754f0 Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sat, 11 Dec 2021 21:40:57 +0100 Subject: [PATCH 02/20] Enable rule experimental:spacing-between-declarations-with-comments For BaselineTests it was necessary to rename the files which are used for testing to have a non standard kotlin file extension. This prevents the files from being changed when running the ktlint formatting on the ktlint code base itself. Note that the baseline protection mechanism did work in this case and as of that has been removed from the command. --- .editorconfig | 2 +- build.gradle | 2 +- ktlint-baseline.xml | 11 ----------- .../com/pinterest/ktlint/core/Reporter.kt | 3 +++ .../kotlin/com/pinterest/ktlint/core/Rule.kt | 1 + .../com/pinterest/ktlint/BaselineTests.kt | 18 +++++++++--------- .../resources/TestBaselineExtraErrorFile._kt | 5 +++++ .../resources/TestBaselineExtraErrorFile.kt | 3 --- ktlint/src/test/resources/TestBaselineFile._kt | 5 +++++ ktlint/src/test/resources/TestBaselineFile.kt | 3 --- ktlint/src/test/resources/test-baseline.xml | 10 +++++----- 11 files changed, 30 insertions(+), 33 deletions(-) delete mode 100644 ktlint-baseline.xml create mode 100644 ktlint/src/test/resources/TestBaselineExtraErrorFile._kt delete mode 100644 ktlint/src/test/resources/TestBaselineExtraErrorFile.kt create mode 100644 ktlint/src/test/resources/TestBaselineFile._kt delete mode 100644 ktlint/src/test/resources/TestBaselineFile.kt diff --git a/.editorconfig b/.editorconfig index 3caaefa279..3d2e3aba65 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,7 +15,7 @@ indent_size = 4 [*.{kt,kts}] ij_kotlin_imports_layout=* -disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping,experimental:annotation,experimental:no-empty-first-line-in-method-block,experimental:spacing-between-declarations-with-comments +disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping,experimental:annotation,experimental:no-empty-first-line-in-method-block [{Makefile,*.go}] indent_style = tab diff --git a/build.gradle b/build.gradle index 56a5e28bec..c89f72af27 100644 --- a/build.gradle +++ b/build.gradle @@ -52,7 +52,7 @@ task ktlint_experimental(type: JavaExec, group: LifecycleBasePlugin.VERIFICATION description = "Check Kotlin code style with experimental rules." classpath = configurations.ktlint main = 'com.pinterest.ktlint.Main' - args '**/src/**/*.kt', '--baseline=ktlint-baseline.xml', '--verbose', '--experimental' + args '**/src/**/*.kt', '--verbose', '--experimental','-F' } /** diff --git a/ktlint-baseline.xml b/ktlint-baseline.xml deleted file mode 100644 index 4327ef2957..0000000000 --- a/ktlint-baseline.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/Reporter.kt b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/Reporter.kt index e61f826a4b..3d7880fabc 100644 --- a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/Reporter.kt +++ b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/Reporter.kt @@ -14,15 +14,18 @@ interface Reporter { * It's guarantied to be called before any of the other [Reporter]s methods. */ fun beforeAll() {} + /** * Called when file (matching the pattern) is found but before it's parsed. */ fun before(file: String) {} fun onLintError(file: String, err: LintError, corrected: Boolean) + /** * Called after ktlint is done with the file. */ fun after(file: String) {} + /** * Called once, after all the files (if any) have been processed. * It's guarantied to be called after all other [Reporter]s methods. diff --git a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/Rule.kt b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/Rule.kt index c32dfad372..6b593de8f1 100644 --- a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/Rule.kt +++ b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/Rule.kt @@ -39,6 +39,7 @@ abstract class Rule(val id: String) { * (in other words, [visit] will be called on [FileASTNode] but not on [FileASTNode] children). */ interface RestrictToRoot + /** * Marker interface to indicate that rule must be executed after all other rules (order among multiple * [RestrictToRootLast] rules is not defined and should be assumed to be random). diff --git a/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt b/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt index 1a7a14b7e1..aa69144dfe 100644 --- a/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt +++ b/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt @@ -33,14 +33,14 @@ class BaselineTests { System.setOut(ps) try { - main(arrayOf("src/test/resources/TestBaselineFile.kt")) + main(arrayOf("src/test/resources/TestBaselineFile._kt")) } catch (e: ExitException) { // handle System.exit } val output = String(stream.toByteArray()) - assertTrue(output.contains(".*:1:24: Unnecessary block".toRegex())) - assertTrue(output.contains(".*:2:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) + assertTrue(output.contains(".*:3:24: Unnecessary block".toRegex())) + assertTrue(output.contains(".*:4:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) } @Test @@ -50,14 +50,14 @@ class BaselineTests { System.setOut(ps) try { - main(arrayOf("src/test/resources/TestBaselineFile.kt", "--baseline=src/test/resources/test-baseline.xml")) + main(arrayOf("src/test/resources/TestBaselineFile._kt", "--baseline=src/test/resources/test-baseline.xml")) } catch (e: ExitException) { // handle System.exit } val output = String(stream.toByteArray()) - assertFalse(output.contains(".*:1:24: Unnecessary block".toRegex())) - assertFalse(output.contains(".*:2:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) + assertFalse(output.contains(".*:3:24: Unnecessary block".toRegex())) + assertFalse(output.contains(".*:4:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) } @Test @@ -67,14 +67,14 @@ class BaselineTests { System.setOut(ps) try { - main(arrayOf("src/test/resources/TestBaselineExtraErrorFile.kt", "--baseline=src/test/resources/test-baseline.xml")) + main(arrayOf("src/test/resources/TestBaselineExtraErrorFile._kt", "--baseline=src/test/resources/test-baseline.xml")) } catch (e: ExitException) { // handle System.exit } val output = String(stream.toByteArray()) - assertFalse(output.contains(".*:1:24: Unnecessary block".toRegex())) - assertTrue(output.contains(".*:2:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) + assertFalse(output.contains(".*:3:24: Unnecessary block".toRegex())) + assertTrue(output.contains(".*:4:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) } private class ExitException(val status: Int) : SecurityException("Should not exit in tests") diff --git a/ktlint/src/test/resources/TestBaselineExtraErrorFile._kt b/ktlint/src/test/resources/TestBaselineExtraErrorFile._kt new file mode 100644 index 0000000000..eb99ed1214 --- /dev/null +++ b/ktlint/src/test/resources/TestBaselineExtraErrorFile._kt @@ -0,0 +1,5 @@ +// This class is stored on purpose in a file having extension "_kt". This prevents the file from being autocorrected by +// ktlint when the ktlint code base itself is reformatted. +class TestBaselineExtraErrorFile { + +} diff --git a/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt b/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt deleted file mode 100644 index 0beb3316d4..0000000000 --- a/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt +++ /dev/null @@ -1,3 +0,0 @@ -class TestBaselineExtraErrorFile { - -} diff --git a/ktlint/src/test/resources/TestBaselineFile._kt b/ktlint/src/test/resources/TestBaselineFile._kt new file mode 100644 index 0000000000..d2a78c4713 --- /dev/null +++ b/ktlint/src/test/resources/TestBaselineFile._kt @@ -0,0 +1,5 @@ +// This class is stored on purpose in a file having extension "_kt". This prevents the file from being autocorrected by +// ktlint when the ktlint code base itself is reformatted. +class TestBaselineFile { + +} diff --git a/ktlint/src/test/resources/TestBaselineFile.kt b/ktlint/src/test/resources/TestBaselineFile.kt deleted file mode 100644 index 9f6b6e33b3..0000000000 --- a/ktlint/src/test/resources/TestBaselineFile.kt +++ /dev/null @@ -1,3 +0,0 @@ -class TestBaselineFile { - -} diff --git a/ktlint/src/test/resources/test-baseline.xml b/ktlint/src/test/resources/test-baseline.xml index e4eff23900..7ac6085365 100644 --- a/ktlint/src/test/resources/test-baseline.xml +++ b/ktlint/src/test/resources/test-baseline.xml @@ -1,10 +1,10 @@ - - - + + + - - + + From 47e97995ee3217016e7a72964f54a4fedba34328 Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sat, 11 Dec 2021 21:42:52 +0100 Subject: [PATCH 03/20] Enable rule experimental:no-empty-first-line-in-method-block --- .editorconfig | 2 +- .../com/pinterest/ktlint/reporter/html/HtmlReporter.kt | 1 - .../importordering/ImportOrderingRuleCustomTest.kt | 7 ------- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/.editorconfig b/.editorconfig index 3d2e3aba65..1594843c02 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,7 +15,7 @@ indent_size = 4 [*.{kt,kts}] ij_kotlin_imports_layout=* -disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping,experimental:annotation,experimental:no-empty-first-line-in-method-block +disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping,experimental:annotation [{Makefile,*.go}] indent_style = tab diff --git a/ktlint-reporter-html/src/main/kotlin/com/pinterest/ktlint/reporter/html/HtmlReporter.kt b/ktlint-reporter-html/src/main/kotlin/com/pinterest/ktlint/reporter/html/HtmlReporter.kt index 51e2eb45bf..e9c1cd9af2 100644 --- a/ktlint-reporter-html/src/main/kotlin/com/pinterest/ktlint/reporter/html/HtmlReporter.kt +++ b/ktlint-reporter-html/src/main/kotlin/com/pinterest/ktlint/reporter/html/HtmlReporter.kt @@ -60,7 +60,6 @@ class HtmlReporter(private val out: PrintStream) : Reporter { } body { if (!acc.isEmpty()) { - h1 { text("Overview") } paragraph { diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/importordering/ImportOrderingRuleCustomTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/importordering/ImportOrderingRuleCustomTest.kt index ed3d1e74e5..d603c9deeb 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/importordering/ImportOrderingRuleCustomTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/importordering/ImportOrderingRuleCustomTest.kt @@ -159,7 +159,6 @@ class ImportOrderingRuleCustomTest { @Test fun `default idea java pattern - wrong order`() { - val imports = """ import android.app.Activity @@ -208,7 +207,6 @@ class ImportOrderingRuleCustomTest { @Test fun `multiple empty lines - ignored`() { - val formattedImports = """ import java.util.List @@ -233,7 +231,6 @@ class ImportOrderingRuleCustomTest { @Test fun `multiple empty lines - transformed into one`() { - val imports = """ import java.util.List @@ -270,7 +267,6 @@ class ImportOrderingRuleCustomTest { @Test fun `alias pattern - ok`() { - val formattedImports = """ import kotlin.io.Closeable as C @@ -295,7 +291,6 @@ class ImportOrderingRuleCustomTest { @Test fun `alias pattern - wrong order`() { - val imports = """ import android.app.Activity @@ -329,7 +324,6 @@ class ImportOrderingRuleCustomTest { @Test fun `full path pattern - ok`() { - val formattedImports = """ import kotlin.io.Closeable @@ -353,7 +347,6 @@ class ImportOrderingRuleCustomTest { @Test fun `full path pattern - wrong order`() { - val imports = """ import android.app.Activity From 5e2b8d5e881d1c8c1544ce2190b773603c6fb548 Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sat, 11 Dec 2021 21:44:11 +0100 Subject: [PATCH 04/20] Enable rule experimental:annotation --- .editorconfig | 2 +- .../core/internal/EditorConfigLoaderTest.kt | 21 ++++++++++++------- .../ruleset/standard/IndentationRuleTest.kt | 3 ++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.editorconfig b/.editorconfig index 1594843c02..7d9d154e23 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,7 +15,7 @@ indent_size = 4 [*.{kt,kts}] ij_kotlin_imports_layout=* -disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping,experimental:annotation +disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping [{Makefile,*.go}] indent_style = tab diff --git a/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt b/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt index 25723676db..5bb5af700d 100644 --- a/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt +++ b/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt @@ -167,7 +167,8 @@ internal class EditorConfigLoaderTest { @Test fun `Should parse assignment with spaces`() { val projectDir = "/project" - @Language("EditorConfig") val editorconfigFile = + @Language("EditorConfig") + val editorconfigFile = """ [*.{kt,kts}] insert_final_newline = true @@ -191,7 +192,8 @@ internal class EditorConfigLoaderTest { @Test fun `Should parse unset values`() { val projectDir = "/project" - @Language("EditorConfig") val editorconfigFile = + @Language("EditorConfig") + val editorconfigFile = """ [*.{kt,kts}] indent_size = unset @@ -214,7 +216,8 @@ internal class EditorConfigLoaderTest { @Test fun `Should parse list with spaces after comma`() { val projectDir = "/project" - @Language("EditorConfig") val editorconfigFile = + @Language("EditorConfig") + val editorconfigFile = """ [*.{kt,kts}] disabled_rules=import-ordering, no-wildcard-imports @@ -253,7 +256,8 @@ internal class EditorConfigLoaderTest { @Test fun `Should return properties for stdin from current directory`() { - @Language("EditorConfig") val editorconfigFile = + @Language("EditorConfig") + val editorconfigFile = """ [*.{kt,kts}] insert_final_newline = true @@ -377,7 +381,8 @@ internal class EditorConfigLoaderTest { @Test fun `Should support editorconfig globs when loading properties for file specified under such glob`() { val projectDir = "/project" - @Language("EditorConfig") val editorconfigFile = + @Language("EditorConfig") + val editorconfigFile = """ [*.{kt,kts}] insert_final_newline = true @@ -406,7 +411,8 @@ internal class EditorConfigLoaderTest { @Test fun `Should add property from override`() { val projectDir = "/project" - @Language("EditorConfig") val editorconfigFile = + @Language("EditorConfig") + val editorconfigFile = """ [*.{kt,kts}] disabled_rules=import-ordering, no-wildcard-imports @@ -436,7 +442,8 @@ internal class EditorConfigLoaderTest { @Test fun `Should replace property from override`() { val projectDir = "/project" - @Language("EditorConfig") val editorconfigFile = + @Language("EditorConfig") + val editorconfigFile = """ [*.{kt,kts}] insert_final_newline = true diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt index d42d1036ca..d2b7fdbfb4 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt @@ -636,7 +636,8 @@ internal class IndentationRuleTest { ) } """.trimIndent() - @Suppress("RemoveCurlyBracesFromTemplate") val expectedCodeTabs = + @Suppress("RemoveCurlyBracesFromTemplate") + val expectedCodeTabs = """ fun foo() { ${TAB}println( From 378a0a3ee60cfffa057559df55e089db4cf81e4d Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sun, 12 Dec 2021 10:29:11 +0100 Subject: [PATCH 05/20] Resolve some violations of rule experimental:argument-list-wrapping It is not yet possible to enable the rule as some violations are actually false positives. This will be solved by https://github.com/pinterest/ktlint/pull/1284 --- .editorconfig | 5 ++++ .../reporter/baseline/BaselineReporterTest.kt | 27 +++++-------------- .../experimental/TrailingCommaRuleTest.kt | 3 ++- .../ruleset/standard/MaxLineLengthRule.kt | 3 ++- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/.editorconfig b/.editorconfig index 7d9d154e23..d32e5b1dd8 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,6 +15,11 @@ indent_size = 4 [*.{kt,kts}] ij_kotlin_imports_layout=* +# Ideally, no experimental rule should be disabled. Ktlint should follow the dogfooding principle. This means that an +# experimental rule should only be added to the master branch no sooner than that this rule has been applied on the +# ktlint code base itself. +# For now, the experimental:argument-list-wrapping still needs to be disabled as it fails the build due to false +# positives. See https://github.com/pinterest/ktlint/pull/1284 disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping [{Makefile,*.go}] diff --git a/ktlint-reporter-baseline/src/test/kotlin/com/pinterest/ktlint/reporter/baseline/BaselineReporterTest.kt b/ktlint-reporter-baseline/src/test/kotlin/com/pinterest/ktlint/reporter/baseline/BaselineReporterTest.kt index edcece007c..62b2f9b1da 100644 --- a/ktlint-reporter-baseline/src/test/kotlin/com/pinterest/ktlint/reporter/baseline/BaselineReporterTest.kt +++ b/ktlint-reporter-baseline/src/test/kotlin/com/pinterest/ktlint/reporter/baseline/BaselineReporterTest.kt @@ -16,49 +16,34 @@ class BaselineReporterTest { val reporter = BaselineReporter(PrintStream(out, true)) reporter.onLintError( "$basePath/one-fixed-and-one-not.kt", - LintError( - 1, 1, "rule-1", - "<\"&'>" - ), + LintError(1, 1, "rule-1", "<\"&'>"), false ) reporter.onLintError( "$basePath/one-fixed-and-one-not.kt", - LintError( - 2, 1, "rule-2", - "And if you see my friend" - ), + LintError(2, 1, "rule-2", "And if you see my friend"), true ) reporter.onLintError( "$basePath/two-not-fixed.kt", - LintError( - 1, 10, "rule-1", - "I thought I would again" - ), + LintError(1, 10, "rule-1", "I thought I would again"), false ) reporter.onLintError( "$basePath/two-not-fixed.kt", - LintError( - 2, 20, "rule-2", - "A single thin straight line" - ), + LintError(2, 20, "rule-2", "A single thin straight line"), false ) reporter.onLintError( "$basePath/all-corrected.kt", - LintError( - 1, 1, "rule-1", - "I thought we had more time" - ), + LintError(1, 1, "rule-1", "I thought we had more time"), true ) reporter.afterAll() assertThat(String(out.toByteArray())).isEqualTo( -""" + """ diff --git a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt index 7300e7367c..454c25401a 100644 --- a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt +++ b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt @@ -920,7 +920,8 @@ class TrailingCommaRuleTest { """.trimIndent() val editorConfigFilePath = writeEditorConfigFile( - ALLOW_TRAILING_COMMA_ON_DECLARATION_SITE, ALLOW_TRAILING_COMMA_ON_CALL_SITE + ALLOW_TRAILING_COMMA_ON_DECLARATION_SITE, + ALLOW_TRAILING_COMMA_ON_CALL_SITE ).absolutePath assertThat(TrailingCommaRule().lint(editorConfigFilePath, code)).isEmpty() diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/MaxLineLengthRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/MaxLineLengthRule.kt index 362a17f8ab..119304530e 100644 --- a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/MaxLineLengthRule.kt +++ b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/MaxLineLengthRule.kt @@ -104,7 +104,8 @@ class MaxLineLengthRule : /* name = */ KTLINT_IGNORE_BACKTICKED_IDENTIFIER_NAME, /* description = */ PROPERTY_DESCRIPTION, /* parser = */ PropertyType.PropertyValueParser.BOOLEAN_VALUE_PARSER, - /* possibleValues = */ true.toString(), false.toString() + /* possibleValues = */ true.toString(), + false.toString() ), defaultValue = false ) From ae40195542aa62f6c17da6e831c3b5455d2e4f15 Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sun, 12 Dec 2021 10:33:34 +0100 Subject: [PATCH 06/20] Enable rule experimental:spacing-between-declarations-with-annotations --- .editorconfig | 2 +- .../src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt | 6 ------ .../ktlint/core/internal/EditorConfigLoaderTest.kt | 6 ++++++ .../ktlint/ruleset/standard/IndentationRuleTest.kt | 2 ++ 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.editorconfig b/.editorconfig index d32e5b1dd8..bc8f5b779e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -20,7 +20,7 @@ ij_kotlin_imports_layout=* # ktlint code base itself. # For now, the experimental:argument-list-wrapping still needs to be disabled as it fails the build due to false # positives. See https://github.com/pinterest/ktlint/pull/1284 -disabled_rules=experimental:trailing-comma,experimental:spacing-between-declarations-with-annotations,experimental:argument-list-wrapping +disabled_rules=experimental:trailing-comma,experimental:argument-list-wrapping [{Makefile,*.go}] indent_style = tab diff --git a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt index fa4ae12301..e90fe28b2c 100644 --- a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt +++ b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt @@ -358,12 +358,6 @@ public object KtLint { @OptIn(FeatureInAlphaState::class) public fun format(params: Params): String = format(toExperimentalParams(params)) - /** - * Fix style violations. - * - * @throws ParseException if text is not a valid Kotlin code - * @throws RuleExecutionException in case of internal failure caused by a bug in rule implementation - */ /** * Fix style violations. * diff --git a/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt b/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt index 5bb5af700d..ec4061c053 100644 --- a/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt +++ b/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt @@ -167,6 +167,7 @@ internal class EditorConfigLoaderTest { @Test fun `Should parse assignment with spaces`() { val projectDir = "/project" + @Language("EditorConfig") val editorconfigFile = """ @@ -192,6 +193,7 @@ internal class EditorConfigLoaderTest { @Test fun `Should parse unset values`() { val projectDir = "/project" + @Language("EditorConfig") val editorconfigFile = """ @@ -216,6 +218,7 @@ internal class EditorConfigLoaderTest { @Test fun `Should parse list with spaces after comma`() { val projectDir = "/project" + @Language("EditorConfig") val editorconfigFile = """ @@ -381,6 +384,7 @@ internal class EditorConfigLoaderTest { @Test fun `Should support editorconfig globs when loading properties for file specified under such glob`() { val projectDir = "/project" + @Language("EditorConfig") val editorconfigFile = """ @@ -411,6 +415,7 @@ internal class EditorConfigLoaderTest { @Test fun `Should add property from override`() { val projectDir = "/project" + @Language("EditorConfig") val editorconfigFile = """ @@ -442,6 +447,7 @@ internal class EditorConfigLoaderTest { @Test fun `Should replace property from override`() { val projectDir = "/project" + @Language("EditorConfig") val editorconfigFile = """ diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt index d2b7fdbfb4..5fc774b029 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt @@ -636,6 +636,7 @@ internal class IndentationRuleTest { ) } """.trimIndent() + @Suppress("RemoveCurlyBracesFromTemplate") val expectedCodeTabs = """ @@ -1318,6 +1319,7 @@ internal class IndentationRuleTest { } } """.trimIndent() + @Suppress("RemoveCurlyBracesFromTemplate") val codeTabs = """ From 76eb0117f6333f9dd1de36f61a860033b778010c Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sun, 12 Dec 2021 10:52:16 +0100 Subject: [PATCH 07/20] Enable rule experimental:trailing-comma For now, it has been chosen to disallow trailing comma's instead of forcing them to be added. Reasons for this are two folded. The number of changes is considerably smaller. More importantly is that the benefit, with respect to avoiding future merge conflicts, seems not that big when scanning the code change which would result from forcing the trailing comma to be added. --- .editorconfig | 4 +++- .../com/pinterest/ktlint/core/KtLint.kt | 4 ++-- .../ktlint/core/api/OptInFeatures.kt | 4 ++-- .../internal/EditorConfigGeneratorTest.kt | 2 +- .../core/internal/EditorConfigLoaderTest.kt | 18 ++++++++--------- .../experimental/EnumEntryNameCaseRuleTest.kt | 2 +- .../experimental/TrailingCommaRuleTest.kt | 8 ++++---- .../ruleset/standard/ImportOrderingRule.kt | 2 +- .../ruleset/standard/FilenameRuleTest.kt | 16 +++++++-------- .../ruleset/standard/IndentationRuleTest.kt | 20 +++++++++---------- .../standard/SpacingAroundColonRuleTest.kt | 2 +- .../standard/SpacingAroundParensRuleTest.kt | 2 +- .../ruleset/test/TestRuleSetProvider.kt | 2 +- .../internal/FileUtilsFileSequenceTest.kt | 2 +- 14 files changed, 45 insertions(+), 43 deletions(-) diff --git a/.editorconfig b/.editorconfig index bc8f5b779e..b47127db18 100644 --- a/.editorconfig +++ b/.editorconfig @@ -20,7 +20,9 @@ ij_kotlin_imports_layout=* # ktlint code base itself. # For now, the experimental:argument-list-wrapping still needs to be disabled as it fails the build due to false # positives. See https://github.com/pinterest/ktlint/pull/1284 -disabled_rules=experimental:trailing-comma,experimental:argument-list-wrapping +disabled_rules=experimental:argument-list-wrapping +ij_kotlin_allow_trailing_comma=false +ij_kotlin_allow_trailing_comma_on_call_site=false [{Makefile,*.go}] indent_style = tab diff --git a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt index e90fe28b2c..0b669e94b8 100644 --- a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt +++ b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/KtLint.kt @@ -63,7 +63,7 @@ public object KtLint { val cb: (e: LintError, corrected: Boolean) -> Unit, val script: Boolean = false, val editorConfigPath: String? = null, - val debug: Boolean = false, + val debug: Boolean = false ) /** @@ -97,7 +97,7 @@ public object KtLint { val editorConfigPath: String? = null, val debug: Boolean = false, val editorConfigOverride: EditorConfigOverridesMap = emptyMap(), - val isInvokedFromCli: Boolean = false, + val isInvokedFromCli: Boolean = false ) { internal val normalizedFilePath: Path? get() = if (fileName == STDIN_FILE || fileName == null) { null diff --git a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/api/OptInFeatures.kt b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/api/OptInFeatures.kt index 7ff56622d2..7399882212 100644 --- a/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/api/OptInFeatures.kt +++ b/ktlint-core/src/main/kotlin/com/pinterest/ktlint/core/api/OptInFeatures.kt @@ -8,7 +8,7 @@ package com.pinterest.ktlint.core.api @Target( AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, - AnnotationTarget.TYPEALIAS, + AnnotationTarget.TYPEALIAS ) public annotation class FeatureInAlphaState @@ -20,6 +20,6 @@ public annotation class FeatureInAlphaState @Target( AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, - AnnotationTarget.TYPEALIAS, + AnnotationTarget.TYPEALIAS ) public annotation class FeatureInBetaState diff --git a/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigGeneratorTest.kt b/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigGeneratorTest.kt index 2e72cad2ba..320b5e36eb 100644 --- a/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigGeneratorTest.kt +++ b/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigGeneratorTest.kt @@ -33,7 +33,7 @@ internal class EditorConfigGeneratorTest { val generatedEditorConfig = editorConfigGenerator.generateEditorconfig( filePath = tempFileSystem.normalizedPath(rootDir).resolve("test.kt"), - rules = rules, + rules = rules ) assertThat(generatedEditorConfig.lines()).doesNotContainAnyElementsOf(listOf("root = true")) diff --git a/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt b/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt index ec4061c053..2981a38562 100644 --- a/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt +++ b/ktlint-core/src/test/kotlin/com/pinterest/ktlint/core/internal/EditorConfigLoaderTest.kt @@ -87,7 +87,7 @@ internal class EditorConfigLoaderTest { .isEqualTo( mapOf( "indent_size" to "2", - "tab_width" to "2", + "tab_width" to "2" ) ) } @@ -137,7 +137,7 @@ internal class EditorConfigLoaderTest { mapOf( "indent_size" to "2", "tab_width" to "2", - "indent_style" to "space", + "indent_style" to "space" ) ) @@ -149,7 +149,7 @@ internal class EditorConfigLoaderTest { mapOf( "indent_size" to "4", "tab_width" to "4", - "indent_style" to "space", + "indent_style" to "space" ) ) @@ -159,7 +159,7 @@ internal class EditorConfigLoaderTest { assertThat(parsedEditorConfig).isEqualTo( mapOf( - "end_of_line" to "lf", + "end_of_line" to "lf" ) ) } @@ -185,7 +185,7 @@ internal class EditorConfigLoaderTest { assertThat(parsedEditorConfig).isEqualTo( mapOf( "insert_final_newline" to "true", - "disabled_rules" to "import-ordering", + "disabled_rules" to "import-ordering" ) ) } @@ -210,7 +210,7 @@ internal class EditorConfigLoaderTest { assertThat(parsedEditorConfig).isEqualTo( mapOf( "indent_size" to "unset", - "tab_width" to "unset", + "tab_width" to "unset" ) ) } @@ -234,7 +234,7 @@ internal class EditorConfigLoaderTest { assertThat(parsedEditorConfig).isNotEmpty assertThat(parsedEditorConfig).isEqualTo( mapOf( - "disabled_rules" to "import-ordering, no-wildcard-imports", + "disabled_rules" to "import-ordering, no-wildcard-imports" ) ) } @@ -272,7 +272,7 @@ internal class EditorConfigLoaderTest { filePath = null, isStdIn = true, rules = rules, - debug = true, + debug = true ) val parsedEditorConfig = editorConfigProperties.convertToRawValues() @@ -407,7 +407,7 @@ internal class EditorConfigLoaderTest { assertThat(parsedEditorConfig).isEqualTo( mapOf( "insert_final_newline" to "true", - "disabled_rules" to "class-must-be-internal", + "disabled_rules" to "class-must-be-internal" ) ) } diff --git a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/EnumEntryNameCaseRuleTest.kt b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/EnumEntryNameCaseRuleTest.kt index d991413a7e..fb8935ba5b 100644 --- a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/EnumEntryNameCaseRuleTest.kt +++ b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/EnumEntryNameCaseRuleTest.kt @@ -47,7 +47,7 @@ class EnumEntryNameCaseRuleTest { 5, "enum-entry-name-case", EnumEntryNameCaseRule.ERROR_MESSAGE - ), + ) ) ) } diff --git a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt index 454c25401a..1c0eb8340b 100644 --- a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt +++ b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt @@ -198,7 +198,7 @@ class TrailingCommaRuleTest { listOf( LintError(line = 1, col = 28, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \")\""), LintError(line = 4, col = 8, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \")\""), - LintError(line = 8, col = 8, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \")\""), + LintError(line = 8, col = 8, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \")\"") ) ) assertThat(TrailingCommaRule().format(editorConfigFilePath, code)) @@ -273,7 +273,7 @@ class TrailingCommaRuleTest { listOf( LintError(line = 1, col = 29, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \")\""), LintError(line = 3, col = 16, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \")\""), - LintError(line = 6, col = 16, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \")\""), + LintError(line = 6, col = 16, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \")\"") ) ) assertThat(TrailingCommaRule().format(editorConfigFilePath, code)) @@ -387,7 +387,7 @@ class TrailingCommaRuleTest { assertThat(TrailingCommaRule().lint(editorConfigFilePath, code)).isEqualTo( listOf( LintError(line = 4, col = 6, ruleId = "trailing-comma", detail = "Missing trailing comma before \">\""), - LintError(line = 8, col = 6, ruleId = "trailing-comma", detail = "Missing trailing comma before \">\""), + LintError(line = 8, col = 6, ruleId = "trailing-comma", detail = "Missing trailing comma before \">\"") ) ) assertThat(TrailingCommaRule().format(editorConfigFilePath, code)) @@ -427,7 +427,7 @@ class TrailingCommaRuleTest { listOf( LintError(line = 2, col = 9, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \"->\""), LintError(line = 3, col = 9, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \"->\""), - LintError(line = 6, col = 6, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \"->\""), + LintError(line = 6, col = 6, ruleId = "trailing-comma", detail = "Unnecessary trailing comma before \"->\"") ) ) assertThat(TrailingCommaRule().format(editorConfigFilePath, code)) diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/ImportOrderingRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/ImportOrderingRule.kt index 8af5e866dc..993c19b372 100644 --- a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/ImportOrderingRule.kt +++ b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/ImportOrderingRule.kt @@ -146,7 +146,7 @@ public class ImportOrderingRule : override val editorConfigProperties: List> = listOf( ktlintCustomImportsLayoutProperty, - ideaImportsLayoutProperty, + ideaImportsLayoutProperty ) override fun visit( diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/FilenameRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/FilenameRuleTest.kt index c528168142..afa8b1988b 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/FilenameRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/FilenameRuleTest.kt @@ -35,7 +35,7 @@ class FilenameRuleTest { import y.Z $src // - """.trimIndent(), + """.trimIndent() ) ).isEmpty() } @@ -66,7 +66,7 @@ class FilenameRuleTest { import y.Z ${src.key} // - """.trimIndent(), + """.trimIndent() ) ).isEqualTo( listOf( @@ -85,7 +85,7 @@ class FilenameRuleTest { /* * copyright */ - """.trimIndent(), + """.trimIndent() ) ).isEmpty() } @@ -98,7 +98,7 @@ class FilenameRuleTest { """ class B class C - """.trimIndent(), + """.trimIndent() ) ).isEmpty() } @@ -113,7 +113,7 @@ class FilenameRuleTest { class C class D } - """.trimIndent(), + """.trimIndent() ) ).isEqualTo( listOf( @@ -129,7 +129,7 @@ class FilenameRuleTest { "woohoo.kt", """ interface Woohoo - """.trimIndent(), + """.trimIndent() ) ).isEqualTo( listOf( @@ -145,7 +145,7 @@ class FilenameRuleTest { "B.kt", """ class `A` - """.trimIndent(), + """.trimIndent() ) ).isEqualTo( listOf( @@ -161,7 +161,7 @@ class FilenameRuleTest { "A.kts", """ class B - """.trimIndent(), + """.trimIndent() ) ).isEmpty() } diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt index 5fc774b029..df99101a16 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt @@ -184,25 +184,25 @@ internal class IndentationRuleTest { assertThat(IndentationRule().lint(" // comment")) .isEqualTo( listOf( - LintError(line = 1, col = 1, ruleId = "indent", detail = "Unexpected indentation (2) (should be 0)"), + LintError(line = 1, col = 1, ruleId = "indent", detail = "Unexpected indentation (2) (should be 0)") ) ) assertThat(IndentationRule().lint(" // comment", script = true)) .isEqualTo( listOf( - LintError(line = 1, col = 1, ruleId = "indent", detail = "Unexpected indentation (2) (should be 0)"), + LintError(line = 1, col = 1, ruleId = "indent", detail = "Unexpected indentation (2) (should be 0)") ) ) assertThat(IndentationRule().lint(" \n // comment")) .isEqualTo( listOf( - LintError(line = 2, col = 1, ruleId = "indent", detail = "Unexpected indentation (2) (should be 0)"), + LintError(line = 2, col = 1, ruleId = "indent", detail = "Unexpected indentation (2) (should be 0)") ) ) assertThat(IndentationRule().lint(" \n // comment", script = true)) .isEqualTo( listOf( - LintError(line = 2, col = 1, ruleId = "indent", detail = "Unexpected indentation (2) (should be 0)"), + LintError(line = 2, col = 1, ruleId = "indent", detail = "Unexpected indentation (2) (should be 0)") ) ) } @@ -437,7 +437,7 @@ internal class IndentationRuleTest { ) ).isEqualTo( listOf( - LintError(line = 4, col = 1, ruleId = "indent", detail = "Unexpected indentation (16) (should be 12)"), + LintError(line = 4, col = 1, ruleId = "indent", detail = "Unexpected indentation (16) (should be 12)") ) ) } @@ -654,7 +654,7 @@ internal class IndentationRuleTest { ).isEqualTo( listOf( LintError(2, 13, "indent", "Missing newline after \"(\""), - LintError(5, 24, "indent", "Missing newline before \")\""), + LintError(5, 24, "indent", "Missing newline before \")\"") ) ) assertThat(IndentationRule().format(code)).isEqualTo(expectedCode) @@ -685,7 +685,7 @@ internal class IndentationRuleTest { IndentationRule().lint(code) ).isEqualTo( listOf( - LintError(5, 1, "indent", "Unexpected indent of multiline string closing quotes"), + LintError(5, 1, "indent", "Unexpected indent of multiline string closing quotes") ) ) assertThat(IndentationRule().format(code)).isEqualTo(expectedCode) @@ -723,7 +723,7 @@ internal class IndentationRuleTest { listOf( LintError(line = 2, col = 13, ruleId = "indent", detail = "Missing newline after \"(\""), LintError(line = 7, col = 1, ruleId = "indent", detail = "Unexpected indent of multiline string closing quotes"), - LintError(line = 7, col = 20, ruleId = "indent", detail = "Missing newline before \")\""), + LintError(line = 7, col = 20, ruleId = "indent", detail = "Missing newline before \")\"") ) ) assertThat(IndentationRule().format(code)).isEqualTo(expectedCode) @@ -760,7 +760,7 @@ internal class IndentationRuleTest { listOf( LintError(line = 2, col = 13, ruleId = "indent", detail = "Missing newline after \"(\""), LintError(line = 6, col = 1, ruleId = "indent", detail = "Unexpected indent of multiline string closing quotes"), - LintError(line = 6, col = 20, ruleId = "indent", detail = "Missing newline before \")\""), + LintError(line = 6, col = 20, ruleId = "indent", detail = "Missing newline before \")\"") ) ) assertThat(IndentationRule().format(code)).isEqualTo(expectedCode) @@ -1292,7 +1292,7 @@ internal class IndentationRuleTest { col = 11, ruleId = "indent", detail = "Indentation of multiline string should not contain both tab(s) and space(s)" - ), + ) ) ) assertThat(IndentationRule().format(code)).isEqualTo(code) diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/SpacingAroundColonRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/SpacingAroundColonRuleTest.kt index f7aed928bc..ff28fd43e3 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/SpacingAroundColonRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/SpacingAroundColonRuleTest.kt @@ -315,7 +315,7 @@ class SpacingAroundColonRuleTest { LintError(19, 19, "colon-spacing", "Unexpected newline before \":\""), LintError(22, 13, "colon-spacing", "Unexpected newline before \":\""), LintError(27, 24, "colon-spacing", "Unexpected newline before \":\""), - LintError(33, 19, "colon-spacing", "Unexpected newline before \":\""), + LintError(33, 19, "colon-spacing", "Unexpected newline before \":\"") ) ) } diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/SpacingAroundParensRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/SpacingAroundParensRuleTest.kt index 5aa4b74c42..f424428278 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/SpacingAroundParensRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/SpacingAroundParensRuleTest.kt @@ -104,7 +104,7 @@ class SpacingAroundParensRuleTest { assertThat(actual) .isEqualTo( listOf( - LintError(1, 28, "paren-spacing", """Unexpected spacing before "(""""), + LintError(1, 28, "paren-spacing", """Unexpected spacing before "("""") ) ) } diff --git a/ktlint-ruleset-test/src/main/kotlin/com/pinterest/ruleset/test/TestRuleSetProvider.kt b/ktlint-ruleset-test/src/main/kotlin/com/pinterest/ruleset/test/TestRuleSetProvider.kt index 9e83f5157e..abc9d03b34 100644 --- a/ktlint-ruleset-test/src/main/kotlin/com/pinterest/ruleset/test/TestRuleSetProvider.kt +++ b/ktlint-ruleset-test/src/main/kotlin/com/pinterest/ruleset/test/TestRuleSetProvider.kt @@ -6,6 +6,6 @@ import com.pinterest.ktlint.core.RuleSetProvider public class TestRuleSetProvider : RuleSetProvider { override fun get(): RuleSet = RuleSet( "test", - DumpASTRule(), + DumpASTRule() ) } diff --git a/ktlint/src/test/kotlin/com/pinterest/ktlint/internal/FileUtilsFileSequenceTest.kt b/ktlint/src/test/kotlin/com/pinterest/ktlint/internal/FileUtilsFileSequenceTest.kt index da13c981bc..1bc28fc195 100644 --- a/ktlint/src/test/kotlin/com/pinterest/ktlint/internal/FileUtilsFileSequenceTest.kt +++ b/ktlint/src/test/kotlin/com/pinterest/ktlint/internal/FileUtilsFileSequenceTest.kt @@ -24,7 +24,7 @@ internal class FileUtilsFileSequenceTest { "${rootDir}project1/build.gradle.kts", "${rootDir}project1/src/scripts/someScript.kts", "${rootDir}project1/src/main/kotlin/One.kt", - "${rootDir}project1/src/main/kotlin/example/Two.kt", + "${rootDir}project1/src/main/kotlin/example/Two.kt" ).map { it.normalizePath() } private val project2Files = listOf( From 6944d59cc702bddaf555d993f4feec4ea7a3da8e Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sun, 12 Dec 2021 10:54:52 +0100 Subject: [PATCH 08/20] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7139e7ca4d..7088e74398 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). - Update Kotlin version to `1.6.0` release - Add separate tasks to run tests on JDK 11 - "testOnJdk11" - Update Dokka to `1.6.0` release +- Apply ktlint experimental rules on the ktlint code base itself. ### Removed From 8642e876a59c1c51cf51d1f82249f15dc349b1ba Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sun, 12 Dec 2021 11:06:58 +0100 Subject: [PATCH 09/20] Remove autocorrect mode from build step ktlint_experimental --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c89f72af27..af193ce51f 100644 --- a/build.gradle +++ b/build.gradle @@ -52,7 +52,7 @@ task ktlint_experimental(type: JavaExec, group: LifecycleBasePlugin.VERIFICATION description = "Check Kotlin code style with experimental rules." classpath = configurations.ktlint main = 'com.pinterest.ktlint.Main' - args '**/src/**/*.kt', '--verbose', '--experimental','-F' + args '**/src/**/*.kt', '--verbose', '--experimental' } /** From fd17608a3e357ae73a5e5ad65b7dcf9fc8041b47 Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Mon, 13 Dec 2021 21:19:15 +0100 Subject: [PATCH 10/20] Run the experimental rules by default There is no need for a separate build task to run the experimental rules. The experimental rules can be executed by default in the "ktlint" task. Also, the baseline has been fixed so there is no longer a need to use extension "_kt" for the baseline test files. Closes #1222 --- build.gradle | 13 ++++--------- ...aErrorFile._kt => TestBaselineExtraErrorFile.kt} | 0 .../{TestBaselineFile._kt => TestBaselineFile.kt} | 0 ktlint/src/test/resources/ktlint-test-baseline.xml | 11 +++++++++++ ktlint/src/test/resources/test-baseline.xml | 10 ---------- 5 files changed, 15 insertions(+), 19 deletions(-) rename ktlint/src/test/resources/{TestBaselineExtraErrorFile._kt => TestBaselineExtraErrorFile.kt} (100%) rename ktlint/src/test/resources/{TestBaselineFile._kt => TestBaselineFile.kt} (100%) create mode 100644 ktlint/src/test/resources/ktlint-test-baseline.xml delete mode 100644 ktlint/src/test/resources/test-baseline.xml diff --git a/build.gradle b/build.gradle index af193ce51f..50a7b069fe 100644 --- a/build.gradle +++ b/build.gradle @@ -42,17 +42,12 @@ dependencies { } task ktlint(type: JavaExec, group: LifecycleBasePlugin.VERIFICATION_GROUP) { - description = "Check Kotlin code style." + description = "Check Kotlin code style including experimental rules." classpath = configurations.ktlint main = 'com.pinterest.ktlint.Main' - args '**/src/**/*.kt', '--baseline=ktlint-baseline.xml', '--verbose' -} - -task ktlint_experimental(type: JavaExec, group: LifecycleBasePlugin.VERIFICATION_GROUP) { - description = "Check Kotlin code style with experimental rules." - classpath = configurations.ktlint - main = 'com.pinterest.ktlint.Main' - args '**/src/**/*.kt', '--verbose', '--experimental' + // Experimental rules run by default run on the ktlint code base itself. Experimental rules should not be released if + // we are not pleased ourselves with the results on the ktlint code base. + args '**/src/**/*.kt', '--baseline=ktlint/src/test/resources/ktlint-test-baseline.xml', '--experimental', '--verbose' } /** diff --git a/ktlint/src/test/resources/TestBaselineExtraErrorFile._kt b/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt similarity index 100% rename from ktlint/src/test/resources/TestBaselineExtraErrorFile._kt rename to ktlint/src/test/resources/TestBaselineExtraErrorFile.kt diff --git a/ktlint/src/test/resources/TestBaselineFile._kt b/ktlint/src/test/resources/TestBaselineFile.kt similarity index 100% rename from ktlint/src/test/resources/TestBaselineFile._kt rename to ktlint/src/test/resources/TestBaselineFile.kt diff --git a/ktlint/src/test/resources/ktlint-test-baseline.xml b/ktlint/src/test/resources/ktlint-test-baseline.xml new file mode 100644 index 0000000000..15bc3fbbc0 --- /dev/null +++ b/ktlint/src/test/resources/ktlint-test-baseline.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/ktlint/src/test/resources/test-baseline.xml b/ktlint/src/test/resources/test-baseline.xml deleted file mode 100644 index 7ac6085365..0000000000 --- a/ktlint/src/test/resources/test-baseline.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - From 916e3c95bcabff2f7d84d70cb7a045602f70d9c7 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Tue, 14 Dec 2021 08:59:45 +0100 Subject: [PATCH 11/20] Update ktlint/src/test/resources/TestBaselineFile.kt --- ktlint/src/test/resources/TestBaselineFile.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/ktlint/src/test/resources/TestBaselineFile.kt b/ktlint/src/test/resources/TestBaselineFile.kt index d2a78c4713..18ad13f6b7 100644 --- a/ktlint/src/test/resources/TestBaselineFile.kt +++ b/ktlint/src/test/resources/TestBaselineFile.kt @@ -1,4 +1,3 @@ -// This class is stored on purpose in a file having extension "_kt". This prevents the file from being autocorrected by // ktlint when the ktlint code base itself is reformatted. class TestBaselineFile { From dffe89011787627ea44fe9db5afc194e4ef0a5a7 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Tue, 14 Dec 2021 08:59:55 +0100 Subject: [PATCH 12/20] Update ktlint/src/test/resources/TestBaselineFile.kt --- ktlint/src/test/resources/TestBaselineFile.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/ktlint/src/test/resources/TestBaselineFile.kt b/ktlint/src/test/resources/TestBaselineFile.kt index 18ad13f6b7..9f6b6e33b3 100644 --- a/ktlint/src/test/resources/TestBaselineFile.kt +++ b/ktlint/src/test/resources/TestBaselineFile.kt @@ -1,4 +1,3 @@ -// ktlint when the ktlint code base itself is reformatted. class TestBaselineFile { } From 48603bf0944ecfca9ed2beb488b6f58b5f088b09 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Tue, 14 Dec 2021 09:00:44 +0100 Subject: [PATCH 13/20] Update ktlint/src/test/resources/TestBaselineExtraErrorFile.kt --- ktlint/src/test/resources/TestBaselineExtraErrorFile.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt b/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt index eb99ed1214..ca7a116ca1 100644 --- a/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt +++ b/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt @@ -1,4 +1,3 @@ -// This class is stored on purpose in a file having extension "_kt". This prevents the file from being autocorrected by // ktlint when the ktlint code base itself is reformatted. class TestBaselineExtraErrorFile { From 44d88e0945006484d7b2f43354835aebe67c69e9 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Tue, 14 Dec 2021 09:01:49 +0100 Subject: [PATCH 14/20] Update ktlint/src/test/resources/TestBaselineExtraErrorFile.kt --- ktlint/src/test/resources/TestBaselineExtraErrorFile.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt b/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt index ca7a116ca1..0beb3316d4 100644 --- a/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt +++ b/ktlint/src/test/resources/TestBaselineExtraErrorFile.kt @@ -1,4 +1,3 @@ -// ktlint when the ktlint code base itself is reformatted. class TestBaselineExtraErrorFile { } From b46ed06a7dfb5ddc6331bde2514c29a66c4a5393 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Tue, 14 Dec 2021 09:48:30 +0100 Subject: [PATCH 15/20] Revert BaselineTests --- .../com/pinterest/ktlint/BaselineTests.kt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt b/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt index aa69144dfe..1a7a14b7e1 100644 --- a/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt +++ b/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt @@ -33,14 +33,14 @@ class BaselineTests { System.setOut(ps) try { - main(arrayOf("src/test/resources/TestBaselineFile._kt")) + main(arrayOf("src/test/resources/TestBaselineFile.kt")) } catch (e: ExitException) { // handle System.exit } val output = String(stream.toByteArray()) - assertTrue(output.contains(".*:3:24: Unnecessary block".toRegex())) - assertTrue(output.contains(".*:4:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) + assertTrue(output.contains(".*:1:24: Unnecessary block".toRegex())) + assertTrue(output.contains(".*:2:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) } @Test @@ -50,14 +50,14 @@ class BaselineTests { System.setOut(ps) try { - main(arrayOf("src/test/resources/TestBaselineFile._kt", "--baseline=src/test/resources/test-baseline.xml")) + main(arrayOf("src/test/resources/TestBaselineFile.kt", "--baseline=src/test/resources/test-baseline.xml")) } catch (e: ExitException) { // handle System.exit } val output = String(stream.toByteArray()) - assertFalse(output.contains(".*:3:24: Unnecessary block".toRegex())) - assertFalse(output.contains(".*:4:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) + assertFalse(output.contains(".*:1:24: Unnecessary block".toRegex())) + assertFalse(output.contains(".*:2:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) } @Test @@ -67,14 +67,14 @@ class BaselineTests { System.setOut(ps) try { - main(arrayOf("src/test/resources/TestBaselineExtraErrorFile._kt", "--baseline=src/test/resources/test-baseline.xml")) + main(arrayOf("src/test/resources/TestBaselineExtraErrorFile.kt", "--baseline=src/test/resources/test-baseline.xml")) } catch (e: ExitException) { // handle System.exit } val output = String(stream.toByteArray()) - assertFalse(output.contains(".*:3:24: Unnecessary block".toRegex())) - assertTrue(output.contains(".*:4:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) + assertFalse(output.contains(".*:1:24: Unnecessary block".toRegex())) + assertTrue(output.contains(".*:2:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) } private class ExitException(val status: Int) : SecurityException("Should not exit in tests") From b8d48b47e006fe50c9ff1b2f9944c304f9832cc6 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Tue, 14 Dec 2021 10:07:36 +0100 Subject: [PATCH 16/20] Revert ktlint-test-baseline --- ktlint/src/test/resources/ktlint-test-baseline.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ktlint/src/test/resources/ktlint-test-baseline.xml b/ktlint/src/test/resources/ktlint-test-baseline.xml index 15bc3fbbc0..4327ef2957 100644 --- a/ktlint/src/test/resources/ktlint-test-baseline.xml +++ b/ktlint/src/test/resources/ktlint-test-baseline.xml @@ -1,11 +1,11 @@ - - + + - - + + From 05147af23555f86d382479d79d6c71d2cca1abf9 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Tue, 14 Dec 2021 10:16:21 +0100 Subject: [PATCH 17/20] Fix tests --- ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt | 2 +- ktlint/src/test/resources/ktlint-test-baseline.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt b/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt index 1a7a14b7e1..889d66747a 100644 --- a/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt +++ b/ktlint/src/test/kotlin/com/pinterest/ktlint/BaselineTests.kt @@ -73,7 +73,7 @@ class BaselineTests { } val output = String(stream.toByteArray()) - assertFalse(output.contains(".*:1:24: Unnecessary block".toRegex())) + assertFalse(output.contains(".*:1:34: Unnecessary block".toRegex())) assertTrue(output.contains(".*:2:1: Unexpected blank line\\(s\\) before \"}\"".toRegex())) } diff --git a/ktlint/src/test/resources/ktlint-test-baseline.xml b/ktlint/src/test/resources/ktlint-test-baseline.xml index 4327ef2957..bdd877a33f 100644 --- a/ktlint/src/test/resources/ktlint-test-baseline.xml +++ b/ktlint/src/test/resources/ktlint-test-baseline.xml @@ -1,10 +1,10 @@ - + - + From 9956e61696cd4e92e4e8b808395ff10694d323f5 Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sat, 18 Dec 2021 20:30:54 +0100 Subject: [PATCH 18/20] Exclude all test resources from the ktlint module from the linting task Those source files all contain linting errors which have to be reported by unit tests. Therefore they should not be reported during a normal build because those should not be fixed as that would result in the tests to fail. --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5f6931c0ce..8add97220d 100644 --- a/build.gradle +++ b/build.gradle @@ -50,7 +50,9 @@ task ktlint(type: JavaExec, group: LifecycleBasePlugin.VERIFICATION_GROUP) { main = 'com.pinterest.ktlint.Main' // Experimental rules run by default run on the ktlint code base itself. Experimental rules should not be released if // we are not pleased ourselves with the results on the ktlint code base. - args '**/src/**/*.kt', '!**/resources/cli/**', '--baseline=ktlint/src/test/resources/ktlint-test-baseline.xml', '--experimental', '--verbose' + // Sources in "ktlint/src/test/resources" are excluded as those source contain lint errors that have to be detected by + // unit tests and should not be reported/fixed. + args '**/src/**/*.kt', '!ktlint/src/test/resources/**', '--baseline=ktlint/src/test/resources/test-baseline.xml', '--experimental', '--verbose' } /** From 275667806a0364abc2b573b6b4844dbec6b7d59f Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sat, 18 Dec 2021 20:31:35 +0100 Subject: [PATCH 19/20] Revert renaming of file test-baseline.xml --- ktlint/src/test/resources/ktlint-test-baseline.xml | 11 ----------- ktlint/src/test/resources/test-baseline.xml | 10 ++++++++++ 2 files changed, 10 insertions(+), 11 deletions(-) delete mode 100644 ktlint/src/test/resources/ktlint-test-baseline.xml create mode 100644 ktlint/src/test/resources/test-baseline.xml diff --git a/ktlint/src/test/resources/ktlint-test-baseline.xml b/ktlint/src/test/resources/ktlint-test-baseline.xml deleted file mode 100644 index bdd877a33f..0000000000 --- a/ktlint/src/test/resources/ktlint-test-baseline.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/ktlint/src/test/resources/test-baseline.xml b/ktlint/src/test/resources/test-baseline.xml new file mode 100644 index 0000000000..f5a5e832f3 --- /dev/null +++ b/ktlint/src/test/resources/test-baseline.xml @@ -0,0 +1,10 @@ + + + + + + + + + + From 749fd7639827b1b380e07fe09dcf5f76f199e31f Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sat, 18 Dec 2021 20:32:12 +0100 Subject: [PATCH 20/20] Fix lint errors due to merge of master in branch --- .../ktlint/ruleset/experimental/TrailingCommaRuleTest.kt | 2 +- .../pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt | 4 ++-- .../ktlint/ruleset/standard/NoTrailingSpacesRuleTest.kt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt index 4ae44d0337..e1db2dde77 100644 --- a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt +++ b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/TrailingCommaRuleTest.kt @@ -928,7 +928,7 @@ class TrailingCommaRuleTest { LintError(line = 14, col = 6, ruleId = "trailing-comma", detail = "Missing trailing comma before \"]\""), LintError(line = 21, col = 10, ruleId = "trailing-comma", detail = "Missing trailing comma before \"]\""), LintError(line = 25, col = 10, ruleId = "trailing-comma", detail = "Missing trailing comma before \"]\""), - LintError(line = 26, col = 6, ruleId = "trailing-comma", detail = "Missing trailing comma before \")\""), + LintError(line = 26, col = 6, ruleId = "trailing-comma", detail = "Missing trailing comma before \")\"") ) ) assertThat(TrailingCommaRule().format(editorConfigFilePath, code)) diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt index 497437ef4b..c693b18103 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt @@ -1368,7 +1368,7 @@ internal class IndentationRuleTest { """.trimIndent() assertThat(IndentationRule().lint(code)) .containsExactly( - LintError(3, 1, "indent", "Unexpected indentation (12) (should be 8)"), + LintError(3, 1, "indent", "Unexpected indentation (12) (should be 8)") ) assertThat(IndentationRule().format(code)).isEqualTo(formattedCode) } @@ -1399,7 +1399,7 @@ internal class IndentationRuleTest { """.trimIndent() assertThat(IndentationRule().lint(code)) .containsExactly( - LintError(4, 1, "indent", "Unexpected indentation (8) (should be 12)"), + LintError(4, 1, "indent", "Unexpected indentation (8) (should be 12)") ) assertThat(IndentationRule().format(code)).isEqualTo(formattedCode) } diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/NoTrailingSpacesRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/NoTrailingSpacesRuleTest.kt index b30573776d..44a3f477af 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/NoTrailingSpacesRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/NoTrailingSpacesRuleTest.kt @@ -148,7 +148,7 @@ class NoTrailingSpacesRuleTest { LintError(3, 3, "no-trailing-spaces", "Trailing space(s)"), LintError(6, 8, "no-trailing-spaces", "Trailing space(s)"), LintError(7, 20, "no-trailing-spaces", "Trailing space(s)"), - LintError(8, 7, "no-trailing-spaces", "Trailing space(s)"), + LintError(8, 7, "no-trailing-spaces", "Trailing space(s)") ) ) }