mill icon indicating copy to clipboard operation
mill copied to clipboard

Support Scoverage for Scala 3

Open ckipp01 opened this issue 3 years ago • 3 comments

This is a follow-up to the work done in https://github.com/com-lihaoyi/mill/pull/2010 to also add support for Scala 3.

ckipp01 avatar Sep 03 '22 12:09 ckipp01

@ckipp01 Do you mind when I update your PR with some changes? As I needed to check it out for a proper review, I already started to think by changing some code.

lefou avatar Sep 19 '22 08:09 lefou

@ckipp01 Do you mind when I update your PR with some changes? As I needed to check it out for a proper review, I already started to think by changing some code.

Hey! Of course, I'm on holiday at the moment so I won't be looking closely at it for another couple weeks probably.

ckipp01 avatar Sep 19 '22 14:09 ckipp01

Don't know why the Scala 3.2 test fails. Maybe, something changed in Scala itself?

lefou avatar Sep 21 '22 19:09 lefou

I still have no idea why the htmlReport test is failing with Scala 3.2. The issue is, that a path for the test setup is not correct. This should be no issue in normal usage though, so I tend to just disable this test for now and merge anyway. If anybody has an idea, please help.

lefou avatar Sep 27 '22 19:09 lefou

@lefou, in my project, I'm getting the No source root found for error on htmlReportAll. As seen, consoleReportAll and xmlReportAll works fine!

My project build is on: https://github.com/carlosedp/riscvassembler/blob/main/build.sc

Log:

[155/155] linter.consoleReportAll
Processing coverage data for 3 data locations
[info] Found 3 subproject scoverage data directories [/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/scoverage/data.dest,/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/scoverage/data.dest,/Users/cdepaula/repos/riscvassembler/out/linter/workerModule/scoverage/data.dest]
Statement coverage.: 78.28%
Branch coverage....: 57.14%
❯ mill linter.htmlReportAll
[155/155] linter.htmlReportAll
Processing coverage data for 3 data locations
[info] Found 3 subproject scoverage data directories [/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/scoverage/data.dest,/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/scoverage/data.dest,/Users/cdepaula/repos/riscvassembler/out/linter/workerModule/scoverage/data.dest]
Exception while building coverage report. No source root found for '/Users/cdepaula/repos/riscvassembler/mainargs/src-3/Macros.scala' (source roots: '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/2.12.17/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/2.13.9/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/3.2.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/2.12.17/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/2.13.9/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/3.2.0/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/2.12.17/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/2.13.9/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/3.2.0/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/test/src/')
java.lang.RuntimeException: No source root found for '/Users/cdepaula/repos/riscvassembler/mainargs/src-3/Macros.scala' (source roots: '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/2.12.17/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/2.13.9/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/3.2.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/2.12.17/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/2.13.9/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/3.2.0/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/2.12.17/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/2.13.9/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/3.2.0/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/test/src/')
	at scoverage.reporter.BaseReportWriter.relativeSource(BaseReportWriter.scala:35)
	at scoverage.reporter.BaseReportWriter.relativeSource(BaseReportWriter.scala:23)
	at scoverage.reporter.ScoverageHtmlWriter.writeFile(ScoverageHtmlWriter.scala:84)
	at scoverage.reporter.ScoverageHtmlWriter.$anonfun$writePackage$1(ScoverageHtmlWriter.scala:79)
	at scoverage.reporter.ScoverageHtmlWriter.$anonfun$writePackage$1$adapted(ScoverageHtmlWriter.scala:79)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at scoverage.reporter.ScoverageHtmlWriter.writePackage(ScoverageHtmlWriter.scala:79)
	at scoverage.reporter.ScoverageHtmlWriter.$anonfun$write$1(ScoverageHtmlWriter.scala:69)
	at scoverage.reporter.ScoverageHtmlWriter.$anonfun$write$1$adapted(ScoverageHtmlWriter.scala:69)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at scoverage.reporter.ScoverageHtmlWriter.write(ScoverageHtmlWriter.scala:69)
	at mill.contrib.scoverage.worker.ScoverageReportWorkerImpl.report(ScoverageReportWorkerImpl.scala:29)
	at mill.contrib.scoverage.ScoverageReport.$anonfun$reportTask$1(ScoverageReport.scala:103)
	at mill.define.Task$TraverseCtx.evaluate(Task.scala:380)
	at mill.eval.Evaluator.$anonfun$evaluateGroup$13(Evaluator.scala:627)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withErr(Console.scala:193)
	at mill.eval.Evaluator.$anonfun$evaluateGroup$12(Evaluator.scala:627)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withOut(Console.scala:164)
	at mill.eval.Evaluator.$anonfun$evaluateGroup$11(Evaluator.scala:626)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withIn(Console.scala:227)
	at mill.eval.Evaluator.$anonfun$evaluateGroup$8(Evaluator.scala:625)
	at mill.eval.Evaluator.$anonfun$evaluateGroup$8$adapted(Evaluator.scala:586)
	at scala.collection.immutable.Vector.foreach(Vector.scala:1856)
	at mill.eval.Evaluator.evaluateGroup(Evaluator.scala:586)
	at mill.eval.Evaluator.$anonfun$evaluateGroupCached$21(Evaluator.scala:478)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.eval.Evaluator.evaluateGroupCached(Evaluator.scala:469)
	at mill.eval.Evaluator.$anonfun$sequentialEvaluate$2(Evaluator.scala:202)
	at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
	at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1293)
	at mill.eval.Evaluator.sequentialEvaluate(Evaluator.scala:177)
	at mill.eval.Evaluator.evaluate(Evaluator.scala:162)
	at mill.main.RunScript$.evaluateNamed(RunScript.scala:363)
	at mill.main.RunScript$.evaluate(RunScript.scala:349)
	at mill.main.RunScript$.$anonfun$evaluateTasks$1(RunScript.scala:314)
	at scala.util.Either.map(Either.scala:382)
	at mill.main.RunScript$.evaluateTasks(RunScript.scala:312)
	at mill.main.RunScript$.$anonfun$runScript$8(RunScript.scala:105)
	at ammonite.util.Res$Success.flatMap(Res.scala:62)
	at mill.main.RunScript$.runScript(RunScript.scala:104)
	at mill.main.MainRunner.$anonfun$runScript$1(MainRunner.scala:119)
	at mill.main.MainRunner.watchLoop2(MainRunner.scala:67)
	at mill.main.MainRunner.runScript(MainRunner.scala:92)
	at mill.MillMain$.main0(MillMain.scala:310)
	at mill.main.MillServerMain$.main0(MillServerMain.scala:79)
	at mill.main.Server.$anonfun$handleRun$1(MillServerMain.scala:184)
	at java.base/java.lang.Thread.run(Thread.java:833)
1 targets failed
linter.htmlReportAll java.lang.RuntimeException: No source root found for '/Users/cdepaula/repos/riscvassembler/mainargs/src-3/Macros.scala' (source roots: '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/2.12.17/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/2.13.9/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/jvm/3.2.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/2.12.17/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/2.13.9/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/native/3.2.0/0.4.7/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/2.12.17/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/2.13.9/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/out/riscvassembler/scalajs/3.2.0/1.11.0/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/test/src/', '/Users/cdepaula/repos/riscvassembler/riscvassembler/src/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/src/', '/Users/cdepaula/repos/riscvassembler/out/rvasmcli/generatedBuildInfo.dest/', '/Users/cdepaula/repos/riscvassembler/rvasmcli/test/src/')
    scoverage.reporter.BaseReportWriter.relativeSource(BaseReportWriter.scala:35)
    scoverage.reporter.BaseReportWriter.relativeSource(BaseReportWriter.scala:23)
    scoverage.reporter.ScoverageHtmlWriter.writeFile(ScoverageHtmlWriter.scala:84)
    scoverage.reporter.ScoverageHtmlWriter.$anonfun$writePackage$1(ScoverageHtmlWriter.scala:79)
    scoverage.reporter.ScoverageHtmlWriter.$anonfun$writePackage$1$adapted(ScoverageHtmlWriter.scala:79)
    scala.collection.immutable.List.foreach(List.scala:333)
    scoverage.reporter.ScoverageHtmlWriter.writePackage(ScoverageHtmlWriter.scala:79)
    scoverage.reporter.ScoverageHtmlWriter.$anonfun$write$1(ScoverageHtmlWriter.scala:69)
    scoverage.reporter.ScoverageHtmlWriter.$anonfun$write$1$adapted(ScoverageHtmlWriter.scala:69)
    scala.collection.immutable.List.foreach(List.scala:333)
    scoverage.reporter.ScoverageHtmlWriter.write(ScoverageHtmlWriter.scala:69)
    mill.contrib.scoverage.worker.ScoverageReportWorkerImpl.report(ScoverageReportWorkerImpl.scala:29)
    mill.contrib.scoverage.ScoverageReport.$anonfun$reportTask$1(ScoverageReport.scala:103)
    mill.define.Task$TraverseCtx.evaluate(Task.scala:380)
❯ mill linter.xmlReportAll
[155/155] linter.xmlReportAll
Processing coverage data for 3 data locations
[info] Found 3 subproject scoverage data directories [/Users/cdepaula/repos/riscvassembler/out/linter/riscvassembler/scoverage/data.dest,/Users/cdepaula/repos/riscvassembler/out/linter/rvasmcli/scoverage/data.dest,/Users/cdepaula/repos/riscvassembler/out/linter/workerModule/scoverage/data.dest]

carlosedp avatar Sep 29 '22 12:09 carlosedp

@carlosedp This is interesting, because the file Macros.scala doesn't even seem to be part of your project. Maybe, it's a bug in scoverage plugin of Scala 3.2.0?

lefou avatar Sep 29 '22 12:09 lefou

Could be, that scoverage detected some inlined macro code and wants to create the Source files listing as HTML.

lefou avatar Sep 29 '22 13:09 lefou

Could be, that scoverage detected some inlined macro code and wants to create the Source files listing as HTML.

That could be the case. I've gotten lots of report of this in scoverage and this is reported in Dotty as well https://github.com/lampepfl/dotty/issues/15791.

ckipp01 avatar Sep 29 '22 14:09 ckipp01

On the plus side, this could mean, scoverage is finally recognizing code in macros, which was not the case until now. I use scoverage in most of my Mill plugin projects, and coverage for Mill tasks/targets isn't reported correctly. But "inline" isn't "macro".

lefou avatar Sep 29 '22 19:09 lefou