szpak / gradle-pitest-plugin

Gradle plugin for PIT Mutation Testing
http://gradle-pitest-plugin.solidsoft.info/
214 stars 58 forks source link

Coverage generator Minion exited abnormally due to UNKNOWN_ERROR #324

Open igorwojda opened 1 year ago

igorwojda commented 1 year ago

Run ./gradlew pitest

Result:

DEPRECATION WARNING. `testPlugin` is deprecated starting with GPP 1.7.4. It is also not used starting with PIT 1.6.7 (to be removed in 1.8.0).

> Task :pitest FAILED
10:24:37 PM PIT >> INFO : Verbose logging is disabled. If you encounter a problem, please enable it before reporting an issue.
10:24:37 PM PIT >> INFO : Incremental analysis reduced number of mutations by 0
10:24:37 PM PIT >> INFO : Created  1 mutation test units in pre scan
10:24:37 PM PIT >> INFO : Sending 2 test classes to minion
10:24:37 PM PIT >> INFO : Sent tests to minion
10:24:37 PM PIT >> SEVERE : Coverage generator Minion exited abnormally due to UNKNOWN_ERROR
Exception in thread "main" org.pitest.util.PitError: Coverage generation minion exited abnormally! (UNKNOWN_ERROR)

Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : OpenJDK 64-Bit Server VM
Vendor : Homebrew
Version : 19
Uptime : 333
Input -> 
 1 : -Dfile.encoding=UTF-8
 2 : -Duser.country=PL
 3 : -Duser.language=en
 4 : -Duser.variant
BootClassPathSupported : false

Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : OpenJDK 64-Bit Server VM
Vendor : Homebrew
Version : 19
Uptime : 334
Input -> 
 1 : -Dfile.encoding=UTF-8
 2 : -Duser.country=PL
 3 : -Duser.language=en
 4 : -Duser.variant
BootClassPathSupported : false

        at org.pitest.util.Unchecked.translateCheckedException(Unchecked.java:20)
        at org.pitest.coverage.execute.DefaultCoverageGenerator.calculateCoverage(DefaultCoverageGenerator.java:106)
        at org.pitest.coverage.execute.DefaultCoverageGenerator.calculateCoverage(DefaultCoverageGenerator.java:52)
        at org.pitest.mutationtest.tooling.MutationCoverage.runAnalysis(MutationCoverage.java:148)
        at org.pitest.mutationtest.tooling.MutationCoverage.runReport(MutationCoverage.java:138)
        at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:129)
        at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:57)
        at org.pitest.mutationtest.commandline.MutationCoverageReport.runReport(MutationCoverageReport.java:98)
        at org.pitest.mutationtest.commandline.MutationCoverageReport.main(MutationCoverageReport.java:45)
Caused by: org.pitest.util.PitError: Coverage generation minion exited abnormally! (UNKNOWN_ERROR)

Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : OpenJDK 64-Bit Server VM
Vendor : Homebrew
Version : 19
Uptime : 333
Input -> 
 1 : -Dfile.encoding=UTF-8
 2 : -Duser.country=PL
 3 : -Duser.language=en
 4 : -Duser.variant
BootClassPathSupported : false

        at org.pitest.coverage.execute.DefaultCoverageGenerator.gatherCoverageData(DefaultCoverageGenerator.java:148)
        at org.pitest.coverage.execute.DefaultCoverageGenerator.calculateCoverage(DefaultCoverageGenerator.java:90)
        ... 7 more

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pitest'.
> Process 'command '/opt/homebrew/Cellar/openjdk/19/libexec/openjdk.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Above is info.solidsoft.pitest:1.9.0, but the info.solidsoft.pitest:1.7.4 is working without this exception

szpak commented 1 year ago

10:24:37 PM PIT >> INFO : Verbose logging is disabled. If you encounter a problem, please enable it before reporting an issue.

Please enable the verbose output and re-run the analysis:

pitest {
    ...
    verbose = true
}
szpak commented 1 year ago

DEPRECATION WARNING. testPlugin is deprecated starting with GPP 1.7.4. It is also not used starting with PIT 1.6.7 (to be removed in 1.8.0).

Please apply to that suggestion. There might be an incompatible version of pitest-junit5-plugin used in your project:

1.1.0 requires pitest 1.9.0 or above and JUnit Platform 1.9.x (Jupiter 5.9.1) 1.0.0 requires pitest 1.9.0 or above and JUnit Platform 1.8.x (Jupiter 5.8.0) 0.16 requires pitest 1.4.0 or above and JUnit Platform 1.8.x (Jupiter 5.8.0)

igorwojda commented 1 year ago

JUnit 5.9.1 pitest 1.9.0

Here is the project https://github.com/igorwojda/kotlin-mutation-testing

Here is the output after enabling verbobe

DEPRECATION WARNING. `testPlugin` is deprecated starting with GPP 1.7.4. It is also not used starting with PIT 1.6.7 (to be removed in 1.8.0).

> Task :pitest FAILED
11:27:55 AM PIT >> INFO : Project base directory is null
11:27:55 AM PIT >> INFO : ---------------------------------------------------------------------------
11:27:55 AM PIT >> INFO : Enabled (+) and disabled (-) features.
11:27:55 AM PIT >> INFO : -----------------------------------------
11:27:55 AM PIT >> INFO : +fann           Filters mutations in classes and methods with matching annotations of class or runtime retention
11:27:55 AM PIT >> INFO :   [annotation]    Annotation to avoid (full package name not required)
11:27:55 AM PIT >> INFO : +fassert        Filters mutations in compiler generated code for assertions
11:27:55 AM PIT >> INFO : +fenum          Filters mutations in enum constructors
11:27:55 AM PIT >> INFO : +feswitch       Filters mutations in switch statements on enums
11:27:55 AM PIT >> INFO : +ffblock        Filters mutations in code duplicated by finally block inlining
11:27:55 AM PIT >> INFO : +ffeach         Filters mutations in compiler generated code that implements for each loops
11:27:55 AM PIT >> INFO : +ffloop         Filters any mutations to increments in for loops as they may cause timeouts
11:27:55 AM PIT >> INFO : +finfinc        Filters mutations to increments that may cause infinite loops
11:27:55 AM PIT >> INFO : +finfit         Filters mutations that may cause infinite loops by removing calls to iterator.next
11:27:55 AM PIT >> INFO : +finull         Filters mutations in compiler generated code that checks for null by calling getClass
11:27:55 AM PIT >> INFO : +fkotlin        Filters out junk mutations in bytecode created by compiler for kotlin language features
11:27:55 AM PIT >> INFO : +flogcall       Filters mutations in code that makes calls to logging frameworks
11:27:55 AM PIT >> INFO : +fmrnull        Filters mutations in compiler generated code that inserts Objects.requireNonNull for method references
11:27:55 AM PIT >> INFO : +frecord        Filters mutations in compiler generated record code
11:27:55 AM PIT >> INFO : +fretequiv      Filters return vals mutants with bytecode equivalent to the unmutated class
11:27:55 AM PIT >> INFO : +fsequivequals  Filters equivalent mutations that affect only performance in short cutting equals methods
11:27:55 AM PIT >> INFO : +fstati         Filters mutations in static initializers and code called only from them
11:27:55 AM PIT >> INFO : +fstrswitch     Filters mutations in compiler generated code for string switch statements
11:27:55 AM PIT >> INFO : +ftrywr         Filters mutations in code generated for try with resources statements
11:27:55 AM PIT >> INFO : +macos_focus    Auto add java.awt.headless=true to keep keyboard focus on Mac OS
11:27:55 AM PIT >> INFO : -auto_threads   Auto set number of threads based on machine
11:27:55 AM PIT >> INFO : -classlimit     Limits the maximum number of mutations per class
11:27:55 AM PIT >> INFO :   [limit]         Integer value for maximum mutations to create per class
11:27:55 AM PIT >> INFO : -export         Exports mutants bytecode and other details to disk
11:27:55 AM PIT >> INFO : -git            Git integration
11:27:55 AM PIT >> INFO : -kotlin         Support for mutating kotlin bytecode
11:27:55 AM PIT >> INFO : ---------------------------------------------------------------------------
11:27:55 AM PIT >> FINE : Running report with ReportOptions[targetClasses=[com.poisonedyouth.*], excludedMethods=[], excludedClasses=[], excludedTestClasses=[], codePaths=[/Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/classes/java/main, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/classes/kotlin/main], reportDir='/Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/reports/pitest', historyInputLocation=null, historyOutputLocation=null, sourceDirs=[/Users/igorwojda/IdeaProjects/kotlin-mutation-testing/src/main/resources, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/src/main/java, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/src/main/kotlin], classPathElements=[/Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.pitest/pitest-junit5-plugin/0.15/f646a9ac41b798b1bb3cf259914ebad8f12f95e5/pitest-junit5-plugin-0.15.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.pitest/pitest/1.9.4/d482d208d9061baeaf8714e95e45aac873203129/pitest-1.9.4.jar, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/classes/java/test, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/classes/kotlin/test, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/resources/test, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/classes/java/main, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/classes/kotlin/main, /Users/igorwojda/IdeaProjects/kotlin-mutation-testing/build/resources/main, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.7.20/eac6656981d9d7156e838467d2d8d79093b1570/kotlin-stdlib-jdk8-1.7.20.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.9.1/83591e5089d6cea5f324aa3ecca9b19d5a275803/junit-platform-engine-1.9.1.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.9.1/3145f821b5cd10abcdc5f925baa5fffa6f1b628f/junit-platform-commons-1.9.1.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.9.1/1bf771097bde296c3ab174861954e8aafaaf2e94/junit-jupiter-engine-5.9.1.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.9.1/7bb53fbc0173e9f6a9d21d58297af94b1f2f9ce1/junit-jupiter-api-5.9.1.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/3.23.1/d2bb60570f5b3d7ffa8f8000118c9c07b86eca93/assertj-core-3.23.1.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.7.20/2a729aa8763306368e665e2b747abd1dfd29b9d5/kotlin-stdlib-jdk7-1.7.20.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.7.20/726594ea9ba2beb2ee113647fefa9a10f9fabe52/kotlin-stdlib-1.7.20.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.2.0/28c11eb91f9b6d8e200631d46e20a7f407f2a046/opentest4j-1.2.0.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.12.10/f34127d93639fad8c6fb84b3ca30292697d6c55d/byte-buddy-1.12.10.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.20/e15351bdaf9fa06f009be5da7a202e4184f00ae3/kotlin-stdlib-common-1.7.20.jar, /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar], mutators=[ALL], features=[], jvmArgs=[-Djava.awt.headless=true], argLine=null, numberOfThreads=1, timeoutFactor=1.25, timeoutConstant=4000, targetTests=[^com\.poisonedyouth\..*$], loggingClasses=[], verbosity=VERBOSE, failWhenNoMutations=false, skipFailingTests=false, outputs=[HTML], groupConfig=TestGroupConfig [excludedGroups=[], includedGroups=[]], fullMutationMatrix=false, mutationUnitSize=0, shouldCreateTimestampedReports=true, detectInlinedCode=false, exportLineCoverage=false, mutationThreshold=0, coverageThreshold=0, testStrengthThreshold=0, mutationEngine='gregor', javaExecutable='null', includeLaunchClasspath=false, properties={}, maxSurvivors=-1, excludedRunners=[], includedTestMethods=[], testPlugin='', useClasspathJar=false, projectBase=null, inputEncoding=UTF-8, outputEncoding=UTF-8]
11:27:55 AM PIT >> FINE : System class path is /Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.pitest/pitest-command-line/1.9.4/73c5d8c3704952fe70ae809f27c11b94b317cce8/pitest-command-line-1.9.4.jar:/Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.pitest/pitest-junit5-plugin/0.15/f646a9ac41b798b1bb3cf259914ebad8f12f95e5/pitest-junit5-plugin-0.15.jar:/Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.pitest/pitest-entry/1.9.4/1c5e75ea59274e0cb7c717fff344878f94706f73/pitest-entry-1.9.4.jar:/Users/igorwojda/.gradle/caches/modules-2/files-2.1/org.pitest/pitest/1.9.4/d482d208d9061baeaf8714e95e45aac873203129/pitest-1.9.4.jar
11:27:55 AM PIT >> FINE : Maximum available memory is 6144 mb
11:27:56 AM PIT >> FINE : Incremental analysis set 24 mutations to a status of NOT_STARTED
11:27:56 AM PIT >> INFO : Incremental analysis reduced number of mutations by 0
11:27:56 AM PIT >> INFO : Created  1 mutation test units in pre scan
11:27:56 AM PIT >> INFO : Sending 2 test classes to minion
11:27:56 AM PIT >> INFO : Sent tests to minion
11:27:56 AM PIT >> FINE : MINION : Installing PIT agent
11:27:56 AM PIT >> FINE : MINION : java.lang.AbstractMethodError: Receiver class org.pitest.junit5.JUnit5TestUnitFinder does not define or inherit an implementation of the resolved method 'abstract java.util.List findTestUnits(java.lang.Class, org.pitest.testapi.TestUnitExecutionListener)' of interface org.pitest.testapi.TestUnitFinder.
11:27:56 AM PIT >> FINE : MINION :      at org.pitest.mutationtest.config.PrioritisingTestUnitFinder.findTestUnits(PrioritisingTestUnitFinder.java:20)
11:27:56 AM PIT >> FINE : MINION :      at org.pitest.testapi.execute.FindTestUnits.findTestUnits(FindTestUnits.java:64)
11:27:56 AM PIT >> FINE : MINION :      at org.pitest.testapi.execute.FindTestUnits.getTestUnits(FindTestUnits.java:47)
11:27:56 AM PIT >> FINE : MINION :      at org.pitest.testapi.execute.FindTestUnits.findTestUnitsForAllSuppliedClasses(FindTestUnits.java:36)
11:27:56 AM PIT >> FINE : MINION :      at org.pitest.coverage.execute.CoverageMinion.discoverTests(CoverageMinion.java:167)
11:27:56 AM PIT >> FINE : MINION :      at org.pitest.coverage.execute.CoverageMinion.getTestsFromParent(CoverageMinion.java:153)
11:27:56 AM PIT >> FINE : MINION :      at org.pitest.coverage.execute.CoverageMinion.main(CoverageMinion.java:84)
11:27:56 AM PIT >> SEVERE : Coverage generator Minion exited abnormally due to UNKNOWN_ERROR
Exception in thread "main" org.pitest.util.PitError: Coverage generation minion exited abnormally! (UNKNOWN_ERROR)

Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : OpenJDK 64-Bit Server VM
Vendor : Homebrew
Version : 19
Uptime : 359
Input -> 
 1 : -Dfile.encoding=UTF-8
 2 : -Duser.country=PL
 3 : -Duser.language=en
 4 : -Duser.variant
BootClassPathSupported : false

Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : OpenJDK 64-Bit Server VM
Vendor : Homebrew
Version : 19
Uptime : 360
Input -> 
 1 : -Dfile.encoding=UTF-8
 2 : -Duser.country=PL
 3 : -Duser.language=en
 4 : -Duser.variant
BootClassPathSupported : false

        at org.pitest.util.Unchecked.translateCheckedException(Unchecked.java:20)
        at org.pitest.coverage.execute.DefaultCoverageGenerator.calculateCoverage(DefaultCoverageGenerator.java:106)
        at org.pitest.coverage.execute.DefaultCoverageGenerator.calculateCoverage(DefaultCoverageGenerator.java:52)
        at org.pitest.mutationtest.tooling.MutationCoverage.runAnalysis(MutationCoverage.java:148)
        at org.pitest.mutationtest.tooling.MutationCoverage.runReport(MutationCoverage.java:138)
        at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:129)
        at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:57)
        at org.pitest.mutationtest.commandline.MutationCoverageReport.runReport(MutationCoverageReport.java:98)
        at org.pitest.mutationtest.commandline.MutationCoverageReport.main(MutationCoverageReport.java:45)
Caused by: org.pitest.util.PitError: Coverage generation minion exited abnormally! (UNKNOWN_ERROR)

Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : OpenJDK 64-Bit Server VM
Vendor : Homebrew
Version : 19
Uptime : 359
Input -> 
 1 : -Dfile.encoding=UTF-8
 2 : -Duser.country=PL
 3 : -Duser.language=en
 4 : -Duser.variant
BootClassPathSupported : false

        at org.pitest.coverage.execute.DefaultCoverageGenerator.gatherCoverageData(DefaultCoverageGenerator.java:148)
        at org.pitest.coverage.execute.DefaultCoverageGenerator.calculateCoverage(DefaultCoverageGenerator.java:90)
        ... 7 more

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pitest'.
> Process 'command '/opt/homebrew/Cellar/openjdk/19/libexec/openjdk.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 889ms
5 actionable tasks: 1 executed, 4 up-to-date
➜  kotlin-mutation-testing git:(master) ✗ 
szpak commented 1 year ago

DEPRECATION WARNING. testPlugin is deprecated starting with GPP 1.7.4. It is also not used starting with PIT 1.6.7 (to be removed in 1.8.0).

Please apply to that suggestion. There might be an incompatible version of pitest-junit5-plugin used in your project:

1.1.0 requires pitest 1.9.0 or above and JUnit Platform 1.9.x (Jupiter 5.9.1) 1.0.0 requires pitest 1.9.0 or above and JUnit Platform 1.8.x (Jupiter 5.8.0) 0.16 requires pitest 1.4.0 or above and JUnit Platform 1.8.x (Jupiter 5.8.0)

Have you applied that suggestion?

11:27:56 AM PIT >> FINE : MINION : java.lang.AbstractMethodError: Receiver class org.pitest.junit5.JUnit5TestUnitFinder does not define or inherit an implementation of the resolved method 'abstract java.util.List findTestUnits(java.lang.Class, org.pitest.testapi.TestUnitExecutionListener)' of interface org.pitest.testapi.TestUnitFinder.

clearly suggests that you mix the incompatible JUnit 5 i pitest-junit5-plugin versions.

szpak commented 1 year ago

@igorwojda Ping. Does the problem still occurs after you used the matching version of the pitest-junit5-plugin version?