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

CoverageAggregator fails java.lang.NoSuchMethodError on Scala 2.13.x #490

Closed
rhass opened this issue Jul 27, 2022 · 4 comments
Closed

CoverageAggregator fails java.lang.NoSuchMethodError on Scala 2.13.x #490

rhass opened this issue Jul 27, 2022 · 4 comments

Comments

@rhass
Copy link

rhass commented Jul 27, 2022

Describe the bug

Scala 2.13 changed the Array object such that the call .toSeq no longer works. I suspect this migration doc is relevant to this issue: https://docs.scala-lang.org/overviews/core/collections-migration-213.html

It also appears there isn't any code-coverage for this code path in CoverageAggregator, which may be why this continues to pass tests.

This issue breaks the the gradle-scoverage .aggregate method which results in the following stack trace:

Caused by: java.lang.NoSuchMethodError: 'java.lang.Object scala.Predef$.refArrayOps(java.lang.Object[])'	
at scoverage.report.CoverageAggregator$.aggregate(CoverageAggregator.scala:18) |  
-- | --
  |   | at scoverage.report.CoverageAggregator.aggregate(CoverageAggregator.scala) |  
  |   | at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) |  
  |   | at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) |  
  |   | at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) |  
  |   | at org.scoverage.ScoverageReport$_report_closure1.doCall(ScoverageReport.groovy:51) |  
  |   | at org.scoverage.ScoverageReport$_report_closure1.doCall(ScoverageReport.groovy) |  
  |   | at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) |  
  |   | at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) |  
  |   | at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) |  
  |   | at org.scoverage.ScoverageRunner.run(ScoverageRunner.groovy:32) |  
  |   | at org.scoverage.ScoverageRunner$run.call(Unknown Source) |  
  |   | at org.scoverage.ScoverageReport.report(ScoverageReport.groovy:47) |  
  |   | at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) |  
  |   | at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) |  
  |   | at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) |  
  |   | at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104) |  
  |   | at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58) |  
  |   | at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51) |  
  |   | at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29) |  
  |   | at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:242) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68) |  
  |   | at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227) |  
  |   | at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210) |  
  |   | at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193) |  
  |   | at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:171) |  
  |   | at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89) |  
  |   | at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40) |  
  |   | at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53) |  
  |   | at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) |  
  |   | at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50) |  
  |   | at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40) |  
  |   | at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68) |  
  |   | at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38) |  
  |   | at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48) |  
  |   | at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36) |  
  |   | at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41) |  
  |   | at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74) |  
  |   | at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55) |  
  |   | at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51) |  
  |   | at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29) |  
  |   | at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:61) |  
  |   | at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:42) |  
  |   | at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60) |  
  |   | at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27) |  
  |   | at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:180) |  
  |   | at org.gradle.internal.execution.steps.BuildCacheStep.executeAndStoreInCache(BuildCacheStep.java:155) |  
  |   | at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$4(BuildCacheStep.java:125) |  
  |   | at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$5(BuildCacheStep.java:125) |  
  |   | at org.gradle.internal.Try$Success.map(Try.java:164) |  
  |   | at org.gradle.internal.execution.steps.BuildCacheStep.executeWithCache(BuildCacheStep.java:85) |  
  |   | at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$0(BuildCacheStep.java:74) |  
  |   | at org.gradle.internal.Either$Left.fold(Either.java:115) |  
  |   | at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59) |  
  |   | at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73) |  
  |   | at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48) |  
  |   | at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36) |  
  |   | at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25) |  
  |   | at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36) |  
  |   | at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22) |  
  |   | at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110) |  
  |   | at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56) |  
  |   | at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56) |  
  |   | at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38) |  
  |   | at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73) |  
  |   | at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44) |  
  |   | at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37) |  
  |   | at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27) |  
  |   | at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89) |  
  |   | at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50) |  
  |   | at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114) |  
  |   | at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57) |  
  |   | at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76) |  
  |   | at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50) |  
  |   | at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:249) |  
  |   | at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86) |  
  |   | at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:54) |  
  |   | at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32) |  
  |   | at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21) |  
  |   | at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38) |  
  |   | at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43) |  
  |   | at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31) |  
  |   | at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40) |  
  |   | at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:287) |  
  |   | at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40) |  
  |   | at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30) |  
  |   | at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37) |  
  |   | at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27) |  
  |   | at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44) |  
  |   | at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33) |  
  |   | at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76) |  
  |   | at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:144) |  
  |   | at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133) |  
  |   | at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77) |  
  |   | 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:204) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) |  
  |   | at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) |  
  |   | 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:333) |  
  |   | at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320) |  
  |   | at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313) |  
  |   | at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299) |  
  |   | at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143) |  
  |   | at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227) |  
  |   | at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218) |  
  |   | at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140) |  
  |   | at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) |  
  |   | at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)

Expected behavior

The expected behavior is for scoverage to function without issues.

What build tool are you using?

Gradle

Version of scoverage

1.4.11

@rhass
Copy link
Author

rhass commented Jul 27, 2022

Note, another person on the Scoverage Gitter reported the same issue: https://gitter.im/scoverage/scoverage?at=623c7ad06b912423204c90aa

@ckipp01
Copy link
Member

ckipp01 commented Jul 27, 2022

Thanks for the report @rhass although I don't believe this is actually an issue here but rather in the gradle plugin although I'm not sure without digging in further. However, I've gone ahead and added some tests that call this method in #491 and the 2.13 tests are passing fine. I'd recommend reporting this to the gradle plugin.

@rhass
Copy link
Author

rhass commented Jul 27, 2022

@ckipp01 Interesting! Thanks for adding this as well. I'll open an issue with the Gradle plugin.

@ckipp01
Copy link
Member

ckipp01 commented Jul 29, 2022

I'll go ahead and close this for now. However if you do find out that it's actually related to core here just report back.

@ckipp01 ckipp01 closed this as completed Jul 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants