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
524 stars 39 forks source link

Functional tests for Gradle Plugin not running #1907

Open nulls opened 8 months ago

nulls commented 8 months ago

Discussed in https://github.com/saveourtool/diktat/discussions/1904

Originally posted by **marcospereira** January 11, 2024 ## tl;dr Gradle Plugin functional tests are not running. I'm not sure if they are still useful, or if the plugin is tested somewhere else. --- It seems like the `functionalTest` task for the `diktat-gradle-plugin` subproject is not working/running (`--console verbose` : ```bash ./gradlew clean :diktat-gradle-plugin:build --console verbose ``` Outputs (redacted for brevity): ``` diktat (master *$=) % ./gradlew clean :diktat-gradle-plugin:build --console verbose > Task :diktat-gradle-plugin:clean > Task :diktat-gradle-plugin:checkKotlinGradlePluginConfigurationErrors > Task :diktat-gradle-plugin:pluginDescriptors > Task :diktat-gradle-plugin:processResources > Task :diktat-gradle-plugin:detekt > Task :diktat-gradle-plugin:generateJacocoTestKitProperties > Task :diktat-gradle-plugin:processTestResources NO-SOURCE > Task :diktat-gradle-plugin:compileKotlin w: Language version 1.4 is deprecated and its support will be removed in a future version of Kotlin > Task :diktat-gradle-plugin:compileJava NO-SOURCE > Task :diktat-gradle-plugin:classes > Task :diktat-gradle-plugin:jar > Task :diktat-gradle-plugin:javadoc NO-SOURCE > Task :diktat-gradle-plugin:javadocJar > Task :diktat-gradle-plugin:assemble > Task :diktat-gradle-plugin:pluginUnderTestMetadata > Task :diktat-gradle-plugin:compileTestKotlin w: Language version 1.4 is deprecated and its support will be removed in a future version of Kotlin > Task :diktat-gradle-plugin:validatePlugins > Task :diktat-gradle-plugin:compileTestJava NO-SOURCE > Task :diktat-gradle-plugin:testClasses UP-TO-DATE > Task :diktat-gradle-plugin:test > Task :diktat-gradle-plugin:jacocoTestReport > Task :diktat-gradle-plugin:check > Task :diktat-gradle-plugin:build Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD SUCCESSFUL in 13s 55 actionable tasks: 46 executed, 9 up-to-date ``` And it looks like those tests are broken. If I run: ```shell ./gradlew clean :diktat-gradle-plugin:functionaTest ``` ``` diktat (master *$=) % ./gradlew clean :diktat-gradle-plugin:functionaTest Type-safe project accessors is an incubating feature. > Configure project : git tree is not clean; Untracked files: [], uncommitted changes: [diktat-rules/src/test/kotlin/com/saveourtool/diktat/ruleset/chapter2/KdocCommentsFixTest.kt, diktat-rules/src/test/kotlin/com/saveourtool/diktat/ruleset/chapter1/PackageNamingFixTest.kt, diktat-cli/src/test/kotlin/com/saveourtool/diktat/smoke/DiktatCliTest.kt] Skipping Nexus publishing configuration as either sonatypeUsername or sonatypePassword are not set Reckoned version: 2.1.0-rc.0.12+20240111T014759Z > Task :diktat-gradle-plugin:compileKotlin w: Language version 1.4 is deprecated and its support will be removed in a future version of Kotlin > Task :diktat-gradle-plugin:compileFunctionalTestKotlin w: Language version 1.4 is deprecated and its support will be removed in a future version of Kotlin > Task :diktat-gradle-plugin:functionalTest DiktatGradlePluginGroovyFunctionalTest > should execute diktatCheck with explicit configuration() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginGroovyFunctionalTest.kt:50 DiktatGradlePluginFunctionalTest > should execute diktatCheck with gradle older than 6_4() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginFunctionalTest.kt:129 DiktatGradlePluginFunctionalTest > should have json reporter files() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginFunctionalTest.kt:56 DiktatGradlePluginFunctionalTest > should execute diktatCheck with gradle older than 6_4() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginFunctionalTest.kt:129 DiktatGradlePluginGroovyFunctionalTest > should execute diktatCheck with explicit configuration() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginGroovyFunctionalTest.kt:50 DiktatGradlePluginFunctionalTest > should have json reporter files() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginFunctionalTest.kt:56 DiktatGradlePluginFunctionalTest > should execute diktatCheck with gradle older than 6_4() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginFunctionalTest.kt:129 DiktatGradlePluginGroovyFunctionalTest > should execute diktatCheck with explicit configuration() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginGroovyFunctionalTest.kt:50 DiktatGradlePluginFunctionalTest > should have json reporter files() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginFunctionalTest.kt:56 DiktatGradlePluginFunctionalTest > should execute diktatCheck with gradle older than 6_4() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginFunctionalTest.kt:129 DiktatGradlePluginGroovyFunctionalTest > should execute diktatCheck with explicit configuration() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginGroovyFunctionalTest.kt:50 DiktatGradlePluginFunctionalTest > should have json reporter files() FAILED java.lang.IllegalArgumentException at DiktatGradlePluginFunctionalTest.kt:56 19 tests completed, 12 failed > Task :diktat-gradle-plugin:functionalTest FAILED > Task :diktat-gradle-plugin:generateJacocoTestKitProperties FAILED > Task :diktat-gradle-plugin:compileTestKotlin w: Language version 1.4 is deprecated and its support will be removed in a future version of Kotlin FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':diktat-gradle-plugin:functionalTest'. > There were failing tests. See the report at: file:///Users/marcospereira/src/github.com/saveourtool/diktat/diktat-gradle-plugin/build/reports/tests/functionalTest/index.html ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: A problem was found with the configuration of task ':diktat-gradle-plugin:generateJacocoTestKitProperties' (type 'WriteProperties'). - Gradle detected a problem with the following location: '/Users/marcospereira/src/github.com/saveourtool/diktat/diktat-gradle-plugin/build/testkit/test/testkit-gradle.properties'. Reason: Task ':diktat-gradle-plugin:functionalTest' uses this output of task ':diktat-gradle-plugin:generateJacocoTestKitProperties' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Possible solutions: 1. Declare task ':diktat-gradle-plugin:generateJacocoTestKitProperties' as an input of ':diktat-gradle-plugin:functionalTest'. 2. Declare an explicit dependency on ':diktat-gradle-plugin:generateJacocoTestKitProperties' from ':diktat-gradle-plugin:functionalTest' using Task#dependsOn. 3. Declare an explicit dependency on ':diktat-gradle-plugin:generateJacocoTestKitProperties' from ':diktat-gradle-plugin:functionalTest' using Task#mustRunAfter. For more information, please refer to https://docs.gradle.org/8.5/userguide/validation_problems.html#implicit_dependency in the Gradle documentation. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Get more help at https://help.gradle.org. ============================================================================== Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 1m 58s 51 actionable tasks: 38 executed, 13 up-to-date ``` It looks like the task is not even configured properly regarding Jacoco tasks. I see https://github.com/saveourtool/diktat/pull/1579, when those tests were re-enabled, but that is ancient (when the project was using Maven). Are these tests still useful? Or is the plugin tested somewhere else? If so, where?