summaryrefslogtreecommitdiff
path: root/contrib/scoverage/worker/1.4.0/src/ScoverageReportWorkerImpl.scala
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/scoverage/worker/1.4.0/src/ScoverageReportWorkerImpl.scala')
-rw-r--r--contrib/scoverage/worker/1.4.0/src/ScoverageReportWorkerImpl.scala37
1 files changed, 37 insertions, 0 deletions
diff --git a/contrib/scoverage/worker/1.4.0/src/ScoverageReportWorkerImpl.scala b/contrib/scoverage/worker/1.4.0/src/ScoverageReportWorkerImpl.scala
new file mode 100644
index 00000000..63fdd693
--- /dev/null
+++ b/contrib/scoverage/worker/1.4.0/src/ScoverageReportWorkerImpl.scala
@@ -0,0 +1,37 @@
+package mill.contrib.scoverage.worker
+
+import mill.contrib.scoverage.api.ScoverageReportWorkerApi
+import mill.eval.PathRef
+import _root_.scoverage.Serializer.{ coverageFile, deserialize }
+import _root_.scoverage.IOUtils.{ findMeasurementFiles, invoked }
+import _root_.scoverage.report.ScoverageHtmlWriter
+import _root_.scoverage.report.ScoverageXmlWriter
+
+private sealed trait ReportType { def folderName: String }
+private case object Html extends ReportType { val folderName: String = "htmlReport" }
+private case object Xml extends ReportType { val folderName: String = "xmlReport" }
+
+class ScoverageReportWorkerImpl extends ScoverageReportWorkerApi {
+ private def buildReport(sources: Seq[PathRef], dataDir: String, selfDir: String, reportType: ReportType) = {
+ val coverageFileObj = coverageFile(dataDir)
+ val coverage = deserialize(coverageFileObj)
+ coverage(invoked(findMeasurementFiles(dataDir)))
+ val sourceFolders = sources.map(_.path.toIO)
+ val folder = new java.io.File(s"${selfDir}/${reportType.folderName}")
+ folder.mkdir()
+ reportType match {
+ case Html =>
+ new ScoverageHtmlWriter(sourceFolders, folder, None)
+ .write(coverage)
+ case Xml =>
+ new ScoverageXmlWriter(sourceFolders, folder, false)
+ .write(coverage)
+ }
+ }
+ def htmlReport(sources: Seq[PathRef], dataDir: String, selfDir: String) = {
+ buildReport(sources, dataDir, selfDir, Html)
+ }
+ def xmlReport(sources: Seq[PathRef], dataDir: String, selfDir: String) = {
+ buildReport(sources, dataDir, selfDir, Xml)
+ }
+}