Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fails to load coverage data from file #138

Closed
Zyphuris55 opened this issue Feb 11, 2022 · 8 comments
Closed

Fails to load coverage data from file #138

Zyphuris55 opened this issue Feb 11, 2022 · 8 comments
Labels

Comments

@Zyphuris55
Copy link

When running the unit tests, they pass. But when running the same tests with code coverage (gutter icon or Run '...' with Coverage), I get the following log error

Executing tasks: [:app:testDebugUnitTest] in project /Users/zyphuris55/REPOS/Own/SplashKoverDemo

> Task :app:preBuild UP-TO-DATE
...
...
...
> Task :app:testDebugUnitTest FAILED
---- IntelliJ IDEA coverage runner ---- 
sampling ...
include patterns:
exclude patterns:
[2022.02.11 13:28:07] (Coverage): Failed to load coverage data from file: /Users/zyphuris55/REPOS/Own/SplashKoverDemo/app/build/kover/testDebugUnitTest.ic: java.io.EOFException
---- IntelliJ IDEA coverage runner ---- 
tracing ...
include patterns:
exclude patterns:
.*.*/.*_MembersInjector\.class
.*.*/Dagger.*Component\.class
.*.*/Dagger.*Component\$Builder\.class
.*.*/.*Module_.*Factory\.class
android\..*
com\.android\..*
java.lang.ExceptionInInitializerError
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:35)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.lang.NullPointerException
	at com.intellij.rt.coverage.data.ProjectData.touchClassLines(ProjectData.java:294)
	at worker.org.gradle.internal.stream.EncodedStream$EncodedInput.<clinit>(EncodedStream.java)
	... 2 more
Class transformation time: 0.029367583s for 189 classes or 1.5538403703703704E-4s per class
Class transformation time: 0.028006939s for 148 classes or 1.8923607432432433E-4s per class
:app:testDebugUnitTest took 1125ms
Task timings:
1.125s  :app:testDebugUnitTest
1.319s  :app:kaptDebugUnitTestKotlin
1.344s  :app:compileDebugUnitTestKotlin
2.337s  :app:kaptDebugKotlin
2.644s  :app:processDebugResources
2.685s  :app:kaptGenerateStubsDebugKotlin
2.844s  :app:compileDebugKotlin
4.829s  :app:kspDebugKotlin
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:testDebugUnitTest'.
> Process 'Gradle Test Executor 1' 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 28s
26 actionable tasks: 26 executed
1:28:08 PM: Task execution finished ':app:testDebugUnitTest --tests "splash.SplashViewModelTest"'.

Running with stacktrace gives

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:testDebugUnitTest'.
> Process 'Gradle Test Executor 2' finished with non-zero exit value 1
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:testDebugUnitTest'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:188)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:186)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:174)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: org.gradle.process.internal.ExecException: Process 'Gradle Test Executor 2' finished with non-zero exit value 1
	at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:414)
	at org.gradle.process.internal.worker.DefaultWorkerProcess.onProcessStop(DefaultWorkerProcess.java:141)
	at org.gradle.process.internal.worker.DefaultWorkerProcess.access$000(DefaultWorkerProcess.java:42)
	at org.gradle.process.internal.worker.DefaultWorkerProcess$1.executionFinished(DefaultWorkerProcess.java:94)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:43)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:245)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:157)
	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy210.executionFinished(Unknown Source)
	at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:221)
	at org.gradle.process.internal.DefaultExecHandle.finished(DefaultExecHandle.java:354)
	at org.gradle.process.internal.ExecHandleRunner.completed(ExecHandleRunner.java:110)
	at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:84)
	at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:42)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
* Get more help at https://help.gradle.org

Manual command (with the same error as above)

[INFO] [org.gradle.process.internal.DefaultExecHandle] Starting process 'Gradle Test Executor 4'. Working directory: /Users/zyphuris55/REPOS/Own/SplashKoverDemo/app Command: 
/Applications/Android\ Studio.app/Contents/jre/Contents/Home/bin/java -Dcoverage.ignore.private.constructor.util.class=true -Didea.coverage.log.level=error -Didea.new.sampling.coverage=true -Didea.new.tracing.coverage=true -Djava.awt.headless=true -Dorg.gradle.internal.worker.tmpdir=/Users/zyphuris55/REPOS/Own/SplashKoverDemo/app/build/tmp/testDebugUnitTest/work -Dorg.gradle.native=false -javaagent:/Users/zyphuris55/Library/Caches/Google/AndroidStudio2021.1/testAgent/intellij-coverage-agent-1.0.579.jar=/private/var/folders/4_/syqrg0y51pnfcnj1f_dz3774jb7tz1/T/coverage3args -javaagent:/Users/zyphuris55/.gradle/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/intellij-coverage-agent/1.0.656/1c818e0932529164115ce6844697f9e97cc1d763/intellij-coverage-agent-1.0.656.jar=/Users/zyphuris55/REPOS/Own/SplashKoverDemo/app/build/tmp/testDebugUnitTest/intellijagent.args @/Users/zyphuris55/.gradle/.tmp/gradle-worker-classpath5508516156963827020txt -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -ea worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 4'

System

➜  SplashKoverDemo git:(main) ./gradlew -v

------------------------------------------------------------
Gradle 7.2
------------------------------------------------------------

Build time:   2021-08-17 09:59:03 UTC
Revision:     a773786b58bb28710e3dc96c4d1a7063628952ad

Kotlin:       1.5.21
Groovy:       3.0.8
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          1.8.0_322 (Temurin 25.322-b06)
OS:           Mac OS X 10.15.7 x86_64

Reference Project: https://github.com/Zyphuris55/SplashKoverDemo

@shanshin
Copy link
Collaborator

Duplicates #7

@Zyphuris55
Copy link
Author

Issue #7 looks to be a separate, still code coverage related, issue.

In their case, it's a LinkageError or during later postings with ClassCircularityError, where the tests are not completing.

My case, the tests are completing, but the report file is being saved/exported incorrectly

@shanshin
Copy link
Collaborator

At the moment, the Kover and Run with Coverage are not expected to work simultaneously (repeated instrumentation of the code by the same agent always leads to unpredictable errors). Specific exceptions can be different and depend on the version of the agents.
It looks like in your case an old version of the Android Studio or an embedded agent is being used.

@Zyphuris55
Copy link
Author

I'm using Studios Bumblebee | 2021.1.1. How can I tell which embedded agent is being used?

@shanshin
Copy link
Collaborator

The specific version from the agent is not so important, because in any case, double instrumentation will cause an error.

You can disable Kover instrumentation when running tests from Android Studio.

An example of how you can do this:

  • configure Kover so that it is disabled when a certain parameter is passed
kover {
    isDisabled = hasProperty("disableKover")
}
  • add argument -PdisableKover when you run it from the AS (Edit Configurations... and then in the configuration to run the necessary tests, add this argument to Arguments:)

@shanshin
Copy link
Collaborator

shanshin commented Apr 8, 2022

Duplicates #7

@shanshin shanshin closed this as completed Apr 8, 2022
@jk-byjus
Copy link

Why was this issue closed ? I still face this issue on Android studio

@Zyphuris55
Copy link
Author

Late update on this issue, but here is my quick fix.

kover {
    if (project.hasProperty("useIntellij"))
        engine = kotlinx.kover.api.DefaultIntellijEngine.INSTANCE
    else
        engine = kotlinx.kover.api.DefaultJacocoEngine.INSTANCE
}

Usage as

./gradlew -PuseIntellij KoverHtmlReport

Without including the flag, such as with the gutter action Run 'XYZ...' with Coverage, will use the Jacoco engine and prevent the Failed to load coverage data from...` crash.

I tried to edit the configuration during a tasks.withType(kotlinx.kover.tasks.KoverReportTask).configureEach {...}, but gradle is annoying to work with and wouldn't let me change any properties.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants