hcoles / pitest

State of the art mutation testing system for the JVM
Apache License 2.0
1.67k stars 357 forks source link

No Unit Test Coverage or Mutation Coverage reported for Robolectric based Unit Tests #1065

Open koral-- opened 2 years ago

koral-- commented 2 years ago

The issue has been reported in https://github.com/koral--/gradle-pitest-plugin/issues/80 but it looks like the cause is located here in the upstream.

Sample project and reports are attached to the linked issue. I'm adding only the verbose logs.

When Robolectric runner is used there is a warning: WARNING : More threads at end of test (6) testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests) than start. (5)

Fail (with RobolectricTestRunner):

> Task :app:pitestDebug
3:12:21 AM PIT >> INFO : ---------------------------------------------------------------------------
3:12:21 AM PIT >> INFO : Enabled (+) and disabled (-) features.
3:12:21 AM PIT >> INFO : -----------------------------------------
3:12:21 AM PIT >> INFO : +FANN           Filters mutations in classes and methods with matching annotations of class or runtime retention
3:12:21 AM PIT >> INFO :   [annotation]    Annotation to avoid (full package name not required)
3:12:21 AM PIT >> INFO : +FENUM          Filters mutations in enum constructors
3:12:21 AM PIT >> INFO : +FFBLOCK        Filters mutations in code duplicated by finally block inlining
3:12:21 AM PIT >> INFO : +FFEACH         Filters mutations in compiler generated code that implements for each loops
3:12:21 AM PIT >> INFO : +FFLOOP         Filters any mutations to increments in for loops as they may cause timeouts
3:12:21 AM PIT >> INFO : +FINFINC        Filters mutations to increments that may cause infinite loops
3:12:21 AM PIT >> INFO : +FINFIT         Filters mutations that may cause infinite loops by removing calls to iterator.next
3:12:21 AM PIT >> INFO : +FINULL         Filters mutations in compiler generated code that checks for null by calling getClass
3:12:21 AM PIT >> INFO : +FKOTLIN        Filters out junk mutations in bytecode created by compiler for kotlin language features
3:12:21 AM PIT >> INFO : +FLOGCALL       Filters mutations in code that makes calls to logging frameworks
3:12:21 AM PIT >> INFO : +FMRNULL        Filters mutations in compiler generated code that inserts Objects.requireNonNull for method references
3:12:21 AM PIT >> INFO : +FRECORD        Filters mutations in compiler generated record code
3:12:21 AM PIT >> INFO : +FRETEQUIV      Filters return vals mutants with bytecode equivalent to the unmutated class
3:12:21 AM PIT >> INFO : +FSEQUIVEQUALS  Filters equivalent mutations that affect only performance in short cutting equals methods
3:12:21 AM PIT >> INFO : +FSTATI         Filters mutations in static initializers and code called only from them
3:12:21 AM PIT >> INFO : +FTRYWR         Filters mutations in code generated for try with resources statements
3:12:21 AM PIT >> INFO : -CLASSLIMIT     Limits the maximum number of mutations per class
3:12:21 AM PIT >> INFO :   [limit]         Integer value for maximum mutations to create per class
3:12:21 AM PIT >> INFO : -EXPORT         Exports mutants bytecode and other details to disk
3:12:21 AM PIT >> INFO : ---------------------------------------------------------------------------
3:12:21 AM PIT >> FINE : Running report with ReportOptions [targetClasses=[nz.co.fendustries.playground.logic.*], excludedMethods=[], excludedClasses=[], excludedTestClasses=[], codePaths=[/Users/koral/StudioProjects/PlayGround/app/build/intermediates/javac/debug/classes, /Users/koral/StudioProjects/PlayGround/app/build/tmp/kotlin-classes/debug], reportDir=/Users/koral/StudioProjects/PlayGround/app/build/reports/pitest, historyInputLocation=null, historyOutputLocation=null, sourceDirs=[/Users/koral/StudioProjects/PlayGround/app/src/main/java, /Users/koral/StudioProjects/PlayGround/app/src/main/resources], classPathElements=[/Users/koral/.gradle/caches/modules-2/files-2.1/org.pitest/pitest/1.7.3/4cc79d87a737e29b551159d96dbb0ec2e2e00f83/pitest-1.7.3.jar, /Users/koral/StudioProjects/PlayGround/app/build/pitest-android-31.jar, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/sourceFolderJavaResources/debug, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/sourceFolderJavaResources/test/debug, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/java_res/debug/out, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/java_res/debugUnitTest/out, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/unitTestConfig/test/debug, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/app_classes/debug/classes.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.6.10/e80fe6ac3c3573a80305f5ec43f86b829e8ab53d/kotlin-stdlib-jdk8-1.6.10.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/junit/junit/4.13.2/8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12/junit-4.13.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/robolectric/4.7.3/7365a38bf8b5cb86a42b48510f4d760f243ba3ca/robolectric-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/shadows-framework/4.7.3/40428b2b6fd3f04f69063c16ee81e35640efeef3/shadows-framework-4.7.3.jar, /Users/koral/.gradle/caches/transforms-3/bc76a61e2f52fee840873ba2228d3a29/transformed/monitor-1.4.0-api.jar, /Users/koral/.gradle/caches/transforms-3/72c0fd9e6a7ae05295a3c24e6e8da85a/transformed/core-ktx-1.7.0-api.jar, /Users/koral/.gradle/caches/transforms-3/d8582867eaa37256acab50a8f22f026e/transformed/material-1.4.0-api.jar, /Users/koral/.gradle/caches/transforms-3/5b19fadd015f93eedb51bf6f69916c94/transformed/constraintlayout-2.0.4-api.jar, /Users/koral/.gradle/caches/transforms-3/e67b37fb46360a8a869a8e0b0d33550d/transformed/appcompat-1.3.0-api.jar, /Users/koral/.gradle/caches/transforms-3/cc15a91d18d5bc166cadb4c859b16007/transformed/viewpager2-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/888fb749ec3d38ad81b3f317c0ec5b5d/transformed/fragment-1.3.4-api.jar, /Users/koral/.gradle/caches/transforms-3/9525211a6a8c276a1ec030e55e5747fd/transformed/activity-1.2.3-api.jar, /Users/koral/.gradle/caches/transforms-3/89f5e0831fe8ab1d2c803577d7256df6/transformed/appcompat-resources-1.3.0-api.jar, /Users/koral/.gradle/caches/transforms-3/3d0a574a23159bbf8b0f0f1a188de7da/transformed/drawerlayout-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/6a0b17e3bf4a57b4f3ef2c5638b62031/transformed/coordinatorlayout-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/3bb129209b307e763df273c7f3ee6db4/transformed/dynamicanimation-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/78dec5dd3c7c6b19e1a4f9856750d3e7/transformed/recyclerview-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/2096ae73aaf9b3c98256d539c6894590/transformed/transition-1.2.0-api.jar, /Users/koral/.gradle/caches/transforms-3/3b5848e87f978530fd08bc954a71823b/transformed/vectordrawable-animated-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/3425a212969f9e3eed12010e51e76719/transformed/vectordrawable-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/5e9fd9c7fd1490f773a9d6e84c719b18/transformed/viewpager-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/6355722eb1372e80b499ff0ffc0b02f8/transformed/legacy-support-core-utils-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/d3aac5f2c2ea89c1ba77460e6f403955/transformed/loader-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/bed78873dd277752e6d16286be2b5548/transformed/customview-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/cacce6b2189df6f252d3b26dae8c2032/transformed/core-1.7.0-api.jar, /Users/koral/.gradle/caches/transforms-3/7fe28f840ce056ac359b4d71d2c552e6/transformed/cursoradapter-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/1e38a5b32fb245eb8fad21ae11742dc5/transformed/lifecycle-viewmodel-savedstate-2.3.1-api.jar, /Users/koral/.gradle/caches/transforms-3/2fe6ff8d375d49f96f9f06df1e5b6b46/transformed/savedstate-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/b1dd340246fb8e7bee45115475483c23/transformed/cardview-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/a16081a276746189c3479c1115e57316/transformed/lifecycle-runtime-2.3.1-api.jar, /Users/koral/.gradle/caches/transforms-3/021df0456884efffb0d51336ad6cf648/transformed/versionedparcelable-1.1.1-api.jar, /Users/koral/.gradle/caches/transforms-3/85e2c9cab8f2603233bc972c82ad899e/transformed/lifecycle-viewmodel-2.3.1-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar, /Users/koral/.gradle/caches/transforms-3/262ccdbf6d0fcc99fd521f946cd2976c/transformed/lifecycle-livedata-2.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/bf62adb95fc8705180cf307f03b9e05a/transformed/lifecycle-livedata-core-2.3.1-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.3.1/fc466261d52f4433863642fb40d12441ae274a98/lifecycle-common-2.3.1.jar, /Users/koral/.gradle/caches/transforms-3/6a2b69f5635c668e2140f71f60c73044/transformed/core-runtime-2.1.0-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar, /Users/koral/.gradle/caches/transforms-3/60e2c5af7e4456070ba298e3311b3a3b/transformed/interpolator-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/8f82009cca0fdc1b03f17ba3609ccc2b/transformed/documentfile-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/0c5349edbf9606a31b46e48b13180659/transformed/localbroadcastmanager-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/60811c9f814e6dbc6aa61251ca11cf3f/transformed/print-1.0.0-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.2.0/57136ff68ee784c6e19db34ed4a175338fadfde1/annotation-1.2.0.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/junit/4.7.3/687caec5d95c48f59c5b6168f8cb1472b1757827/junit-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/resources/4.7.3/fadfbb93414a754f3ca2dd0e71c2ae00730b1cc/resources-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/sandbox/4.7.3/449b30d91562089e74a854f9e6d47cbf1568bdd1/sandbox-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/utils-reflector/4.7.3/e27d1c1f867ff08b5aa28cae6a5b1f3d067002e4/utils-reflector-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/plugins-maven-dependency-resolver/4.7.3/e9ad43068bd4bc6e967879dbacd2a450e2a0b994/plugins-maven-dependency-resolver-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/shadowapi/4.7.3/f58b925a11605a82f32327db4c271f3f835008f/shadowapi-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/utils/4.7.3/580c8ed0e92508df69c8dc97e8cbc12b1052ef10/utils-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/pluginapi/4.7.3/56e53ba922352fac89d1851206ba95fa7ea13452/pluginapi-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/annotations/4.7.3/ce248bbc24447bc2acfbababc51a100570c0e8cf/annotations-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/nativeruntime/4.7.3/4f5ba41c2a5c064fb82d0f30fcc03f1300d913b5/nativeruntime-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/27.0.1-jre/bd41a290787b5301e63929676d792c507bbc00ae/guava-27.0.1-jre.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.guava/failureaccess/1.0.1/1dcf1de382a0bf95a3d8b0849546c88bac1292c9/failureaccess-1.0.1.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/b421526c5f297295adef1c886e5246c39d4ac629/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.checkerframework/checker-qual/2.5.2/cea74543d5904a30861a61b4643a5f2bb372efc4/checker-qual-2.5.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.9.0/74fe3b8b4f3fc84dc940d0ca4c4b270dbc902764/error_prone_annotations-2.9.0.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.1/ed28ded51a8b1c6b112568def5f4b455e6809019/j2objc-annotations-1.1.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.codehaus.mojo/animal-sniffer-annotations/1.17/f97ce6decaea32b36101e37979f8b647f00681fb/animal-sniffer-annotations-1.17.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.3.2/934c04d3cfef185a8008e7bf34331b79730a9d43/javax.annotation-api-1.3.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.2/f4d7f0fc9054386f2893b602454d48e07d4fbead/asm-commons-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.2/fbc178fc5ba3dab50fd7e8a5317b8b647c8e8946/asm-util-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.2/7487dd756daf96cab9986e44b9d7bcb796a61c10/asm-analysis-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.2/d96c99a30f5e1a19b0e609dbb19a44d8518ac01e/asm-tree-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.2/81a03f76019c67362299c40e0ba13405f5467bff/asm-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.almworks.sqlite4java/sqlite4java/1.0.392/d6234e08ff4e1607ff5321da2579571f05ff778d/sqlite4java-1.0.392.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.ibm.icu/icu4j/53.1/786d9055d4ca8c1aab4a7d4ac8283f973fd7e41f/icu4j-53.1.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value-annotations/1.7.4/eff48ed53995db2dadf0456426cc1f8700136f86/auto-value-annotations-1.7.4.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.68/46a080368d38b428d237a59458f9bc915222894d/bcprov-jdk15on-1.68.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.6.10/e1c380673654a089c4f0c9f83d0ddfdc1efdb498/kotlin-stdlib-jdk7-1.6.10.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.10/b8af3fe6f1ca88526914929add63cf5e7c5049af/kotlin-stdlib-1.6.10.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.10/c118700e3a33c8a0d9adc920e9dec0831171925/kotlin-stdlib-common-1.6.10.jar, /Users/koral/.gradle/caches/transforms-3/843c94101332065d4e12bf5fe442ece1/transformed/annotation-experimental-1.1.0-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.4/1f001d7db280a89a6c26b26a66eb064bb6d5efeb/constraintlayout-solver-2.0.4.jar, /Users/koral/StudioProjects/PlayGround/app/build/tmp/kotlin-classes/debugUnitTest, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/javac/debugUnitTest/classes, /Users/koral/StudioProjects/PlayGround/app/build/tmp/kotlin-classes/debug, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/javac/debug/classes, /Users/koral/StudioProjects/PlayGround/app/src/test/java, /Users/koral/StudioProjects/PlayGround/app/src/test/resources], mutators=[], features=[], dependencyAnalysisMaxDistance=-1, jvmArgs=[-Djava.awt.headless=true], numberOfThreads=1, timeoutFactor=1.25, timeoutConstant=4000, targetTests=[^nz\.co\.fendustries\.playground\.logic\..*$], loggingClasses=[kotlin.jvm.internal], verbosity=VERBOSE, failWhenNoMutations=true, outputs=[XML, HTML], groupConfig=TestGroupConfig [excludedGroups=[], includedGroups=[]], fullMutationMatrix=false, mutationUnitSize=0, shouldCreateTimestampedReports=false, detectInlinedCode=false, exportLineCoverage=false, mutationThreshold=80, testStrengthThreshold=0, coverageThreshold=0, mutationEngine=gregor, javaExecutable=null, includeLaunchClasspath=false, properties={}, maxSurvivors=-1, excludedRunners=[], includedTestMethods=[], testPlugin=, useClasspathJar=false, skipFailingTests=false]
3:12:21 AM PIT >> FINE : System class path is /Users/koral/.gradle/caches/modules-2/files-2.1/org.pitest/pitest-command-line/1.7.3/6b38162935953025ec76b3fa42c1e86a3035930/pitest-command-line-1.7.3.jar:/Users/koral/.gradle/caches/modules-2/files-2.1/org.pitest/pitest-entry/1.7.3/4ac3ac202b16e4b1aac7af79d6e6fe6261bc9fa3/pitest-entry-1.7.3.jar:/Users/koral/.gradle/caches/modules-2/files-2.1/org.pitest/pitest/1.7.3/4cc79d87a737e29b551159d96dbb0ec2e2e00f83/pitest-1.7.3.jar
3:12:21 AM PIT >> FINE : Maximum available memory is 8192 mb
3:12:21 AM PIT >> FINE : Incremental analysis set 4 mutations to a status of NOT_STARTED
3:12:21 AM PIT >> INFO : Incremental analysis reduced number of mutations by 0
3:12:21 AM PIT >> INFO : Created  2 mutation test units in pre scan
3:12:22 AM PIT >> FINE : MINION : Installing PIT agent
3:12:22 AM PIT >> INFO : Sending 4 test classes to minion
3:12:22 AM PIT >> INFO : Sent tests to minion
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> FINE : Expecting 4 tests classes from parent
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> FINE : Tests classes received
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> INFO : Checking environment
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> INFO : Found  2 tests
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> INFO : Dependency analysis reduced number of potential tests by 0
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> INFO : 2 tests received
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> FINE : Running 2 units
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> FINE : Gathering coverage for test Description [testClass=nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest, name=testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
3:12:22 AM PIT >> INFO : MINION : 3:12:22 AM PIT >> FINE : Gathering coverage for test Description [testClass=nz.co.fendustries.playground.logic.NotCoveredLogicTests, name=testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]
3:12:24 AM PIT >> INFO : MINION : 3:12:24 AM PIT >> WARNING : More threads at end of test (6) testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests) than start. (5)                                                                                                                                                                                                                                       -3:12:24 AM PIT >> FINE : Coverage generator Minion exited ok
3:12:24 AM PIT >> INFO : Calculated coverage in 2 seconds.
3:12:24 AM PIT >> FINE : Used memory after coverage calculation 13 mb
3:12:24 AM PIT >> FINE : Free Memory after coverage calculation 498 mb
3:12:24 AM PIT >> FINE : Incremental analysis set 4 mutations to a status of NOT_STARTED
3:12:24 AM PIT >> INFO : Incremental analysis reduced number of mutations by 0
3:12:24 AM PIT >> INFO : Created  2 mutation test units
3:12:24 AM PIT >> FINE : Used memory before analysis start 16 mb
3:12:24 AM PIT >> FINE : Free Memory before analysis start 495 mb
3:12:24 AM PIT >> FINE : Running 2 units
stdout  : Installing PIT agent
stderr  : 3:12:24 AM PIT >> FINE : Running mutation MutationDetails [id=MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator], filename=CorrectlyCoveredLogic.kt, block=0, lineNumber=5, description=Replaced integer addition with subtraction, testsInOrder=[nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]]
stderr  : 3:12:24 AM PIT >> FINE : mutating method addSomeNumbers
stderr  : 3:12:24 AM PIT >> FINE : 1 relevant test for addSomeNumbers
stderr  : 3:12:24 AM PIT >> FINE : replaced class with mutant in 5 ms
stderr  : 3:12:24 AM PIT >> FINE : Running 1 units
stderr  : 3:12:24 AM PIT >> FINE : Mutation MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator] detected = KILLED by [nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
stderr  : 3:12:24 AM PIT >> FINE : processed mutation in 53 ms.
stderr  : 3:12:24 AM PIT >> FINE : Running mutation MutationDetails [id=MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator], filename=CorrectlyCoveredLogic.kt, block=0, lineNumber=5, description=replaced int return with 0 for nz/co/fendustries/playground/logic/CorrectlyCoveredLogic::addSomeNumbers, testsInOrder=[nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]]
3:12:24 AM PIT >> FINE : MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator] KILLED by [nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
stderr  : 3:12:24 AM PIT >> FINE : mutating method addSomeNumbers
stderr  : 3:12:24 AM PIT >> FINE : 1 relevant test for addSomeNumbers
stderr  : 3:12:24 AM PIT >> FINE : replaced class with mutant in 4 ms
stderr  : 3:12:24 AM PIT >> FINE : Running 1 units
stderr  : 3:12:24 AM PIT >> FINE : Mutation MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator] detected = KILLED by [nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
stderr  : 3:12:24 AM PIT >> FINE : processed mutation in 7 ms.
3:12:24 AM PIT >> FINE : MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator] KILLED by [nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
3:12:24 AM PIT >> FINE : Exit code was - OK
3:stdout  : Installing PIT agentexited ok                                                                                                                                                                                                                                                                                                                                                                                            /
stderr  : 3:12:25 AM PIT >> FINE : Running mutation MutationDetails [id=MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator], filename=NotCoveredLogic.kt, block=0, lineNumber=5, description=replaced int return with 0 for nz/co/fendustries/playground/logic/NotCoveredLogic::subtractSomeNumbers, testsInOrder=[nz.co.fendustries.playground.logic.NotCoveredLogicTests.testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]]
stderr  : 3:12:25 AM PIT >> FINE : mutating method subtractSomeNumbers
stderr  : 3:12:25 AM PIT >> FINE : 1 relevant test for subtractSomeNumbers
stderr  : 3:12:25 AM PIT >> FINE : replaced class with mutant in 6 ms
stderr  : 3:12:25 AM PIT >> FINE : Running 1 units
stderr  : 3:12:27 AM PIT >> FINE : Mutation MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator] detected = SURVIVED
stderr  : 3:12:27 AM PIT >> FINE : processed mutation in 1960 ms.
stderr  : 3:12:27 AM PIT >> FINE : Running mutation MutationDetails [id=MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator], filename=NotCoveredLogic.kt, block=0, lineNumber=5, description=Replaced integer subtraction with addition, testsInOrder=[nz.co.fendustries.playground.logic.NotCoveredLogicTests.testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]]
3:12:27 AM PIT >> FINE : MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator] SURVIVED
stderr  : 3:12:27 AM PIT >> FINE : mutating method subtractSomeNumbers
stderr  : 3:12:27 AM PIT >> FINE : 1 relevant test for subtractSomeNumbers
stderr  : 3:12:27 AM PIT >> FINE : replaced class with mutant in 17 ms
stderr  : 3:12:27 AM PIT >> FINE : Running 1 units
stderr  : 3:12:27 AM PIT >> FINE : Mutation MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator] detected = SURVIVED
stderr  : 3:12:27 AM PIT >> FINE : processed mutation in 27 ms.
3:12:27 AM PIT >> FINE : MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator] SURVIVED
3:12:27 AM PIT >> FINE : Exit code was - OK
3:3:12:27 AM PIT >> INFO : Completed in 5 seconds                                                                                                                                                                                                                                                                                                                                                                                    -
================================================================================
- Mutators
================================================================================
> org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator
>> Generated 2 Killed 1 (50%)
> KILLED 1 SURVIVED 1 TIMED_OUT 0 NON_VIABLE 0
> MEMORY_ERROR 0 NOT_STARTED 0 STARTED 0 RUN_ERROR 0
> NO_COVERAGE 0
--------------------------------------------------------------------------------
> org.pitest.mutationtest.engine.gregor.mutators.MathMutator
>> Generated 2 Killed 1 (50%)
> KILLED 1 SURVIVED 1 TIMED_OUT 0 NON_VIABLE 0
> MEMORY_ERROR 0 NOT_STARTED 0 STARTED 0 RUN_ERROR 0
> NO_COVERAGE 0
--------------------------------------------------------------------------------
================================================================================
- Timings
================================================================================
> pre-scan for mutations : < 1 second
> scan classpath : < 1 second
> coverage and dependency analysis : 2 seconds
> build mutation tests : < 1 second
> run mutation analysis : 2 seconds
--------------------------------------------------------------------------------
> Total  : 5 seconds
--------------------------------------------------------------------------------
================================================================================
- Statistics
================================================================================
>> Line Coverage: 4/4 (100%)
>> Generated 4 mutations Killed 2 (50%)
>> Mutations with no coverage 0. Test strength 50%
>> Ran 4 tests (1 tests per mutation)

Pitest development is currently supported by GroupCDG.
Enhanced functionality available at https://pitest.groupcdg.com/
Exception in thread "main" java.lang.RuntimeException: Mutation score of 50 is below threshold of 80
        at org.pitest.mutationtest.commandline.MutationCoverageReport.throwErrorIfScoreBelowMutationThreshold(MutationCoverageReport.java:70)
        at org.pitest.mutationtest.commandline.MutationCoverageReport.main(MutationCoverageReport.java:51)

> Task :app:pitestDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:pitestDebug'.
> Process 'command '/Users/koral/.sdkman/candidates/java/11.0.15-tem/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

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 7s
20 actionable tasks: 2 executed, 18 up-to-date

Success (without RobolectricTestRunner):

> Task :app:pitestDebug
3:10:25 AM PIT >> INFO : ---------------------------------------------------------------------------
3:10:25 AM PIT >> INFO : Enabled (+) and disabled (-) features.
3:10:25 AM PIT >> INFO : -----------------------------------------
3:10:25 AM PIT >> INFO : +FANN           Filters mutations in classes and methods with matching annotations of class or runtime retention
3:10:25 AM PIT >> INFO :   [annotation]    Annotation to avoid (full package name not required)
3:10:25 AM PIT >> INFO : +FENUM          Filters mutations in enum constructors
3:10:25 AM PIT >> INFO : +FFBLOCK        Filters mutations in code duplicated by finally block inlining
3:10:25 AM PIT >> INFO : +FFEACH         Filters mutations in compiler generated code that implements for each loops
3:10:25 AM PIT >> INFO : +FFLOOP         Filters any mutations to increments in for loops as they may cause timeouts
3:10:25 AM PIT >> INFO : +FINFINC        Filters mutations to increments that may cause infinite loops
3:10:25 AM PIT >> INFO : +FINFIT         Filters mutations that may cause infinite loops by removing calls to iterator.next
3:10:25 AM PIT >> INFO : +FINULL         Filters mutations in compiler generated code that checks for null by calling getClass
3:10:25 AM PIT >> INFO : +FKOTLIN        Filters out junk mutations in bytecode created by compiler for kotlin language features
3:10:25 AM PIT >> INFO : +FLOGCALL       Filters mutations in code that makes calls to logging frameworks
3:10:25 AM PIT >> INFO : +FMRNULL        Filters mutations in compiler generated code that inserts Objects.requireNonNull for method references
3:10:25 AM PIT >> INFO : +FRECORD        Filters mutations in compiler generated record code
3:10:25 AM PIT >> INFO : +FRETEQUIV      Filters return vals mutants with bytecode equivalent to the unmutated class
3:10:25 AM PIT >> INFO : +FSEQUIVEQUALS  Filters equivalent mutations that affect only performance in short cutting equals methods
3:10:25 AM PIT >> INFO : +FSTATI         Filters mutations in static initializers and code called only from them
3:10:25 AM PIT >> INFO : +FTRYWR         Filters mutations in code generated for try with resources statements
3:10:25 AM PIT >> INFO : -CLASSLIMIT     Limits the maximum number of mutations per class
3:10:25 AM PIT >> INFO :   [limit]         Integer value for maximum mutations to create per class
3:10:25 AM PIT >> INFO : -EXPORT         Exports mutants bytecode and other details to disk
3:10:25 AM PIT >> INFO : ---------------------------------------------------------------------------
3:10:25 AM PIT >> FINE : Running report with ReportOptions [targetClasses=[nz.co.fendustries.playground.logic.*], excludedMethods=[], excludedClasses=[], excludedTestClasses=[], codePaths=[/Users/koral/StudioProjects/PlayGround/app/build/intermediates/javac/debug/classes, /Users/koral/StudioProjects/PlayGround/app/build/tmp/kotlin-classes/debug], reportDir=/Users/koral/StudioProjects/PlayGround/app/build/reports/pitest, historyInputLocation=null, historyOutputLocation=null, sourceDirs=[/Users/koral/StudioProjects/PlayGround/app/src/main/java, /Users/koral/StudioProjects/PlayGround/app/src/main/resources], classPathElements=[/Users/koral/.gradle/caches/modules-2/files-2.1/org.pitest/pitest/1.7.3/4cc79d87a737e29b551159d96dbb0ec2e2e00f83/pitest-1.7.3.jar, /Users/koral/StudioProjects/PlayGround/app/build/pitest-android-31.jar, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/sourceFolderJavaResources/debug, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/sourceFolderJavaResources/test/debug, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/java_res/debug/out, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/java_res/debugUnitTest/out, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/unitTestConfig/test/debug, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/app_classes/debug/classes.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.6.10/e80fe6ac3c3573a80305f5ec43f86b829e8ab53d/kotlin-stdlib-jdk8-1.6.10.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/junit/junit/4.13.2/8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12/junit-4.13.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/robolectric/4.7.3/7365a38bf8b5cb86a42b48510f4d760f243ba3ca/robolectric-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/shadows-framework/4.7.3/40428b2b6fd3f04f69063c16ee81e35640efeef3/shadows-framework-4.7.3.jar, /Users/koral/.gradle/caches/transforms-3/bc76a61e2f52fee840873ba2228d3a29/transformed/monitor-1.4.0-api.jar, /Users/koral/.gradle/caches/transforms-3/72c0fd9e6a7ae05295a3c24e6e8da85a/transformed/core-ktx-1.7.0-api.jar, /Users/koral/.gradle/caches/transforms-3/d8582867eaa37256acab50a8f22f026e/transformed/material-1.4.0-api.jar, /Users/koral/.gradle/caches/transforms-3/5b19fadd015f93eedb51bf6f69916c94/transformed/constraintlayout-2.0.4-api.jar, /Users/koral/.gradle/caches/transforms-3/e67b37fb46360a8a869a8e0b0d33550d/transformed/appcompat-1.3.0-api.jar, /Users/koral/.gradle/caches/transforms-3/cc15a91d18d5bc166cadb4c859b16007/transformed/viewpager2-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/888fb749ec3d38ad81b3f317c0ec5b5d/transformed/fragment-1.3.4-api.jar, /Users/koral/.gradle/caches/transforms-3/9525211a6a8c276a1ec030e55e5747fd/transformed/activity-1.2.3-api.jar, /Users/koral/.gradle/caches/transforms-3/89f5e0831fe8ab1d2c803577d7256df6/transformed/appcompat-resources-1.3.0-api.jar, /Users/koral/.gradle/caches/transforms-3/3d0a574a23159bbf8b0f0f1a188de7da/transformed/drawerlayout-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/6a0b17e3bf4a57b4f3ef2c5638b62031/transformed/coordinatorlayout-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/3bb129209b307e763df273c7f3ee6db4/transformed/dynamicanimation-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/78dec5dd3c7c6b19e1a4f9856750d3e7/transformed/recyclerview-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/2096ae73aaf9b3c98256d539c6894590/transformed/transition-1.2.0-api.jar, /Users/koral/.gradle/caches/transforms-3/3b5848e87f978530fd08bc954a71823b/transformed/vectordrawable-animated-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/3425a212969f9e3eed12010e51e76719/transformed/vectordrawable-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/5e9fd9c7fd1490f773a9d6e84c719b18/transformed/viewpager-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/6355722eb1372e80b499ff0ffc0b02f8/transformed/legacy-support-core-utils-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/d3aac5f2c2ea89c1ba77460e6f403955/transformed/loader-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/bed78873dd277752e6d16286be2b5548/transformed/customview-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/cacce6b2189df6f252d3b26dae8c2032/transformed/core-1.7.0-api.jar, /Users/koral/.gradle/caches/transforms-3/7fe28f840ce056ac359b4d71d2c552e6/transformed/cursoradapter-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/1e38a5b32fb245eb8fad21ae11742dc5/transformed/lifecycle-viewmodel-savedstate-2.3.1-api.jar, /Users/koral/.gradle/caches/transforms-3/2fe6ff8d375d49f96f9f06df1e5b6b46/transformed/savedstate-1.1.0-api.jar, /Users/koral/.gradle/caches/transforms-3/b1dd340246fb8e7bee45115475483c23/transformed/cardview-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/a16081a276746189c3479c1115e57316/transformed/lifecycle-runtime-2.3.1-api.jar, /Users/koral/.gradle/caches/transforms-3/021df0456884efffb0d51336ad6cf648/transformed/versionedparcelable-1.1.1-api.jar, /Users/koral/.gradle/caches/transforms-3/85e2c9cab8f2603233bc972c82ad899e/transformed/lifecycle-viewmodel-2.3.1-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar, /Users/koral/.gradle/caches/transforms-3/262ccdbf6d0fcc99fd521f946cd2976c/transformed/lifecycle-livedata-2.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/bf62adb95fc8705180cf307f03b9e05a/transformed/lifecycle-livedata-core-2.3.1-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.3.1/fc466261d52f4433863642fb40d12441ae274a98/lifecycle-common-2.3.1.jar, /Users/koral/.gradle/caches/transforms-3/6a2b69f5635c668e2140f71f60c73044/transformed/core-runtime-2.1.0-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar, /Users/koral/.gradle/caches/transforms-3/60e2c5af7e4456070ba298e3311b3a3b/transformed/interpolator-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/8f82009cca0fdc1b03f17ba3609ccc2b/transformed/documentfile-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/0c5349edbf9606a31b46e48b13180659/transformed/localbroadcastmanager-1.0.0-api.jar, /Users/koral/.gradle/caches/transforms-3/60811c9f814e6dbc6aa61251ca11cf3f/transformed/print-1.0.0-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.2.0/57136ff68ee784c6e19db34ed4a175338fadfde1/annotation-1.2.0.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/junit/4.7.3/687caec5d95c48f59c5b6168f8cb1472b1757827/junit-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/resources/4.7.3/fadfbb93414a754f3ca2dd0e71c2ae00730b1cc/resources-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/sandbox/4.7.3/449b30d91562089e74a854f9e6d47cbf1568bdd1/sandbox-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/utils-reflector/4.7.3/e27d1c1f867ff08b5aa28cae6a5b1f3d067002e4/utils-reflector-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/plugins-maven-dependency-resolver/4.7.3/e9ad43068bd4bc6e967879dbacd2a450e2a0b994/plugins-maven-dependency-resolver-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/shadowapi/4.7.3/f58b925a11605a82f32327db4c271f3f835008f/shadowapi-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/utils/4.7.3/580c8ed0e92508df69c8dc97e8cbc12b1052ef10/utils-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/pluginapi/4.7.3/56e53ba922352fac89d1851206ba95fa7ea13452/pluginapi-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/annotations/4.7.3/ce248bbc24447bc2acfbababc51a100570c0e8cf/annotations-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.robolectric/nativeruntime/4.7.3/4f5ba41c2a5c064fb82d0f30fcc03f1300d913b5/nativeruntime-4.7.3.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/27.0.1-jre/bd41a290787b5301e63929676d792c507bbc00ae/guava-27.0.1-jre.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.guava/failureaccess/1.0.1/1dcf1de382a0bf95a3d8b0849546c88bac1292c9/failureaccess-1.0.1.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/b421526c5f297295adef1c886e5246c39d4ac629/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.checkerframework/checker-qual/2.5.2/cea74543d5904a30861a61b4643a5f2bb372efc4/checker-qual-2.5.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.9.0/74fe3b8b4f3fc84dc940d0ca4c4b270dbc902764/error_prone_annotations-2.9.0.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.1/ed28ded51a8b1c6b112568def5f4b455e6809019/j2objc-annotations-1.1.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.codehaus.mojo/animal-sniffer-annotations/1.17/f97ce6decaea32b36101e37979f8b647f00681fb/animal-sniffer-annotations-1.17.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.3.2/934c04d3cfef185a8008e7bf34331b79730a9d43/javax.annotation-api-1.3.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.2/f4d7f0fc9054386f2893b602454d48e07d4fbead/asm-commons-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.2/fbc178fc5ba3dab50fd7e8a5317b8b647c8e8946/asm-util-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.2/7487dd756daf96cab9986e44b9d7bcb796a61c10/asm-analysis-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.2/d96c99a30f5e1a19b0e609dbb19a44d8518ac01e/asm-tree-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.2/81a03f76019c67362299c40e0ba13405f5467bff/asm-9.2.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.almworks.sqlite4java/sqlite4java/1.0.392/d6234e08ff4e1607ff5321da2579571f05ff778d/sqlite4java-1.0.392.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.ibm.icu/icu4j/53.1/786d9055d4ca8c1aab4a7d4ac8283f973fd7e41f/icu4j-53.1.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value-annotations/1.7.4/eff48ed53995db2dadf0456426cc1f8700136f86/auto-value-annotations-1.7.4.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.68/46a080368d38b428d237a59458f9bc915222894d/bcprov-jdk15on-1.68.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.6.10/e1c380673654a089c4f0c9f83d0ddfdc1efdb498/kotlin-stdlib-jdk7-1.6.10.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.10/b8af3fe6f1ca88526914929add63cf5e7c5049af/kotlin-stdlib-1.6.10.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.10/c118700e3a33c8a0d9adc920e9dec0831171925/kotlin-stdlib-common-1.6.10.jar, /Users/koral/.gradle/caches/transforms-3/843c94101332065d4e12bf5fe442ece1/transformed/annotation-experimental-1.1.0-api.jar, /Users/koral/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.4/1f001d7db280a89a6c26b26a66eb064bb6d5efeb/constraintlayout-solver-2.0.4.jar, /Users/koral/StudioProjects/PlayGround/app/build/tmp/kotlin-classes/debugUnitTest, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/javac/debugUnitTest/classes, /Users/koral/StudioProjects/PlayGround/app/build/tmp/kotlin-classes/debug, /Users/koral/StudioProjects/PlayGround/app/build/intermediates/javac/debug/classes, /Users/koral/StudioProjects/PlayGround/app/src/test/java, /Users/koral/StudioProjects/PlayGround/app/src/test/resources], mutators=[], features=[], dependencyAnalysisMaxDistance=-1, jvmArgs=[-Djava.awt.headless=true], numberOfThreads=1, timeoutFactor=1.25, timeoutConstant=4000, targetTests=[^nz\.co\.fendustries\.playground\.logic\..*$], loggingClasses=[kotlin.jvm.internal], verbosity=VERBOSE, failWhenNoMutations=true, outputs=[XML, HTML], groupConfig=TestGroupConfig [excludedGroups=[], includedGroups=[]], fullMutationMatrix=false, mutationUnitSize=0, shouldCreateTimestampedReports=false, detectInlinedCode=false, exportLineCoverage=false, mutationThreshold=80, testStrengthThreshold=0, coverageThreshold=0, mutationEngine=gregor, javaExecutable=null, includeLaunchClasspath=false, properties={}, maxSurvivors=-1, excludedRunners=[], includedTestMethods=[], testPlugin=, useClasspathJar=false, skipFailingTests=false]
3:10:25 AM PIT >> FINE : System class path is /Users/koral/.gradle/caches/modules-2/files-2.1/org.pitest/pitest-command-line/1.7.3/6b38162935953025ec76b3fa42c1e86a3035930/pitest-command-line-1.7.3.jar:/Users/koral/.gradle/caches/modules-2/files-2.1/org.pitest/pitest-entry/1.7.3/4ac3ac202b16e4b1aac7af79d6e6fe6261bc9fa3/pitest-entry-1.7.3.jar:/Users/koral/.gradle/caches/modules-2/files-2.1/org.pitest/pitest/1.7.3/4cc79d87a737e29b551159d96dbb0ec2e2e00f83/pitest-1.7.3.jar
3:10:25 AM PIT >> FINE : Maximum available memory is 8192 mb
3:10:25 AM PIT >> FINE : Incremental analysis set 4 mutations to a status of NOT_STARTED
3:10:25 AM PIT >> INFO : Incremental analysis reduced number of mutations by 0
3:10:25 AM PIT >> INFO : Created  2 mutation test units in pre scan
3:10:25 AM PIT >> FINE : MINION : Installing PIT agent
3:10:25 AM PIT >> INFO : Sending 4 test classes to minion
3:10:25 AM PIT >> INFO : Sent tests to minion
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> FINE : Expecting 4 tests classes from parent
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> FINE : Tests classes received
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> INFO : Checking environment
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> INFO : Found  2 tests
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> INFO : Dependency analysis reduced number of potential tests by 0
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> INFO : 2 tests received
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> FINE : Running 2 units
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> FINE : Gathering coverage for test Description [testClass=nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest, name=testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
3:10:25 AM PIT >> INFO : MINION : 3:10:25 AM PIT >> FINE : Gathering coverage for test Description [testClass=nz.co.fendustries.playground.logic.NotCoveredLogicTests, name=testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]                                                                                                                                                                        -3:10:25 AM PIT >> FINE : Coverage generator Minion exited ok
3:10:25 AM PIT >> INFO : Calculated coverage in 0 seconds.
3:10:25 AM PIT >> FINE : Used memory after coverage calculation 13 mb
3:10:25 AM PIT >> FINE : Free Memory after coverage calculation 498 mb
3:10:25 AM PIT >> FINE : Incremental analysis set 4 mutations to a status of NOT_STARTED
3:10:25 AM PIT >> INFO : Incremental analysis reduced number of mutations by 0
3:10:25 AM PIT >> INFO : Created  2 mutation test units
3:10:25 AM PIT >> FINE : Used memory before analysis start 16 mb
3:10:25 AM PIT >> FINE : Free Memory before analysis start 495 mb
3:10:25 AM PIT >> FINE : Running 2 units
stdout  : Installing PIT agent
stderr  : 3:10:26 AM PIT >> FINE : Running mutation MutationDetails [id=MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator], filename=CorrectlyCoveredLogic.kt, block=0, lineNumber=5, description=Replaced integer addition with subtraction, testsInOrder=[nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]]
stderr  : 3:10:26 AM PIT >> FINE : mutating method addSomeNumbers
stderr  : 3:10:26 AM PIT >> FINE : 1 relevant test for addSomeNumbers
stderr  : 3:10:26 AM PIT >> FINE : replaced class with mutant in 4 ms
stderr  : 3:10:26 AM PIT >> FINE : Running 1 units
stderr  : 3:10:26 AM PIT >> FINE : Mutation MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator] detected = KILLED by [nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
stderr  : 3:10:26 AM PIT >> FINE : processed mutation in 51 ms.
stderr  : 3:10:26 AM PIT >> FINE : Running mutation MutationDetails [id=MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator], filename=CorrectlyCoveredLogic.kt, block=0, lineNumber=5, description=replaced int return with 0 for nz/co/fendustries/playground/logic/CorrectlyCoveredLogic::addSomeNumbers, testsInOrder=[nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]]
3:10:26 AM PIT >> FINE : MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator] KILLED by [nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
stderr  : 3:10:26 AM PIT >> FINE : mutating method addSomeNumbers
stderr  : 3:10:26 AM PIT >> FINE : 1 relevant test for addSomeNumbers
stderr  : 3:10:26 AM PIT >> FINE : replaced class with mutant in 4 ms
stderr  : 3:10:26 AM PIT >> FINE : Running 1 units
stderr  : 3:10:26 AM PIT >> FINE : Mutation MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator] detected = KILLED by [nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
stderr  : 3:10:26 AM PIT >> FINE : processed mutation in 8 ms.
3:10:26 AM PIT >> FINE : MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.CorrectlyCoveredLogic, method=addSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator] KILLED by [nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest.testAddSomeNumbers(nz.co.fendustries.playground.logic.CorrectlyCoveredLogicTest)]
3:10:26 AM PIT >> FINE : Exit code was - OK
3:10:26 AM PIT >> FINE : Minion exited ok                                                                                                                                                                                                                                                                                                                                                                                            /stdout  : Installing PIT agent
stderr  : 3:10:26 AM PIT >> FINE : Running mutation MutationDetails [id=MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator], filename=NotCoveredLogic.kt, block=0, lineNumber=5, description=replaced int return with 0 for nz/co/fendustries/playground/logic/NotCoveredLogic::subtractSomeNumbers, testsInOrder=[nz.co.fendustries.playground.logic.NotCoveredLogicTests.testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]]
stderr  : 3:10:26 AM PIT >> FINE : mutating method subtractSomeNumbers
stderr  : 3:10:26 AM PIT >> FINE : 1 relevant test for subtractSomeNumbers
stderr  : 3:10:26 AM PIT >> FINE : replaced class with mutant in 4 ms
stderr  : 3:10:26 AM PIT >> FINE : Running 1 units
stderr  : 3:10:26 AM PIT >> FINE : Mutation MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator] detected = KILLED by [nz.co.fendustries.playground.logic.NotCoveredLogicTests.testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]
stderr  : 3:10:26 AM PIT >> FINE : processed mutation in 51 ms.
stderr  : 3:10:26 AM PIT >> FINE : Running mutation MutationDetails [id=MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator], filename=NotCoveredLogic.kt, block=0, lineNumber=5, description=Replaced integer subtraction with addition, testsInOrder=[nz.co.fendustries.playground.logic.NotCoveredLogicTests.testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]]
3:10:26 AM PIT >> FINE : MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[6], mutator=org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator] KILLED by [nz.co.fendustries.playground.logic.NotCoveredLogicTests.testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]
stderr  : 3:10:26 AM PIT >> FINE : mutating method subtractSomeNumbers
stderr  : 3:10:26 AM PIT >> FINE : 1 relevant test for subtractSomeNumbers
stderr  : 3:10:26 AM PIT >> FINE : replaced class with mutant in 3 ms
stderr  : 3:10:26 AM PIT >> FINE : Running 1 units
stderr  : 3:10:26 AM PIT >> FINE : Mutation MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator] detected = KILLED by [nz.co.fendustries.playground.logic.NotCoveredLogicTests.testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]
stderr  : 3:10:26 AM PIT >> FINE : processed mutation in 7 ms.
3:10:26 AM PIT >> FINE : MutationIdentifier [location=Location [clazz=nz.co.fendustries.playground.logic.NotCoveredLogic, method=subtractSomeNumbers, methodDesc=(II)I], indexes=[5], mutator=org.pitest.mutationtest.engine.gregor.mutators.MathMutator] KILLED by [nz.co.fendustries.playground.logic.NotCoveredLogicTests.testSubtractSomeNumbers(nz.co.fendustries.playground.logic.NotCoveredLogicTests)]
3:10:26 AM PIT >> FINE : Exit code was - OK
3:10:26 AM PIT >> FINE : Minion exited ok                                                                                                                                                                                                                                                                                                                                                                                            -3:10:26 AM PIT >> INFO : Completed in 1 seconds
================================================================================
- Mutators
================================================================================
> org.pitest.mutationtest.engine.gregor.mutators.returns.PrimitiveReturnsMutator
>> Generated 2 Killed 2 (100%)
> KILLED 2 SURVIVED 0 TIMED_OUT 0 NON_VIABLE 0
> MEMORY_ERROR 0 NOT_STARTED 0 STARTED 0 RUN_ERROR 0
> NO_COVERAGE 0
--------------------------------------------------------------------------------
> org.pitest.mutationtest.engine.gregor.mutators.MathMutator
>> Generated 2 Killed 2 (100%)
> KILLED 2 SURVIVED 0 TIMED_OUT 0 NON_VIABLE 0
> MEMORY_ERROR 0 NOT_STARTED 0 STARTED 0 RUN_ERROR 0
> NO_COVERAGE 0
--------------------------------------------------------------------------------
================================================================================
- Timings
================================================================================
> pre-scan for mutations : < 1 second
> scan classpath : < 1 second
> coverage and dependency analysis : < 1 second
> build mutation tests : < 1 second
> run mutation analysis : < 1 second
--------------------------------------------------------------------------------
> Total  : 1 seconds
--------------------------------------------------------------------------------
================================================================================
- Statistics
================================================================================
>> Line Coverage: 4/4 (100%)
>> Generated 4 mutations Killed 4 (100%)
>> Mutations with no coverage 0. Test strength 100%
>> Ran 4 tests (1 tests per mutation)

Pitest development is currently supported by GroupCDG.
Enhanced functionality available at https://pitest.groupcdg.com/

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 3s
20 actionable tasks: 2 executed, 18 up-to-date
hcoles commented 1 year ago

@koral-- I think there is still more work to do on roboelectric support, but some improvements have just been released in pitest 1.10.0.