saveourtool / diktat

Strict coding standard for Kotlin and a custom set of rules for detecting code smells, code style issues and bugs
https://diktat.saveourtool.com
MIT License
521 stars 39 forks source link

Add more integration tests to check Diktat compatibility with KtLint #1569

Open 0x6675636b796f75676974687562 opened 1 year ago

0x6675636b796f75676974687562 commented 1 year ago

Update: we already have Gradle plug-in tests available under diktat-gradle-plugin/src/functionalTest/,

so the primary focus of this task is the Spotless plug-in (see below).

Diktat Gradle plug-in

Probably DiktatJavaExecTaskTest, feel free to suggest a different test class name.

  1. Check that the plug-in is indeed executed and reports errors (i. e. ./gradlew diktatCheck) against invalid input should produce errors from diktat-ruleset namespace.
    • plain reporter
    • sarif reporter
  2. Check that KtLint-standard rules are indeed excluded, i. e. none of the errors from the standard or experimental namespaces are triggered by the invalid input (be sure to also disable the corresponding Diktat rules via diktat-analysis.yml). This test should fail if changes from #1568 are temporarily rolled back.

Spotless Gradle plug-in

  1. Check that diffplug/spotless, when run as a Gradle plug-in with the snapshot Diktat version, produces expected errors and has no regressions like #1559.
    • plain reporter
    • sarif reporter

Basically, we need a test which would, one way or another, launch a forked JVM against a test project, something we do in DiktatSmokeTest.

At the same time, I'd vote against using save-cli for this purpose and instead look for smth similar to khmarbaise/maven-it-extension for JUnit 5, for two reasons:

@petertrr, @nulls, WDYT?

nulls commented 1 year ago

we need also test spotless maven plugin

petertrr commented 1 year ago

Sounds reasonable; our functionalTest for Gradle plugin can be enhanced to run different scenarios as well as projects with spotless plugin using Gradle testkit.

nulls commented 1 year ago

Depends on https://github.com/saveourtool/save-cli/issues/521