From 330c3a51b0a695c5b80507f74df3a2a425d6a7ce Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Mon, 15 Dec 2025 12:51:07 +0100 Subject: [PATCH] Add task to delete measurements This is useful together with https://github.com/scoverage/scalac-scoverage-plugin/pull/742 --- src/main/scala/scoverage/ScoverageKeys.scala | 2 ++ src/main/scala/scoverage/ScoverageSbtPlugin.scala | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/scala/scoverage/ScoverageKeys.scala b/src/main/scala/scoverage/ScoverageKeys.scala index f68ab42..1f869c2 100644 --- a/src/main/scala/scoverage/ScoverageKeys.scala +++ b/src/main/scala/scoverage/ScoverageKeys.scala @@ -8,6 +8,8 @@ object ScoverageKeys { "controls whether code instrumentation is enabled or not" ) @transient + lazy val coverageDeleteMeasurements = taskKey[Unit]("delete existing coverage measurements") + @transient lazy val coverageReport = taskKey[Unit]("run report generation") @transient lazy val coverageAggregate = taskKey[Unit]("aggregate reports from subprojects") diff --git a/src/main/scala/scoverage/ScoverageSbtPlugin.scala b/src/main/scala/scoverage/ScoverageSbtPlugin.scala index 76a9cdf..4c28d32 100644 --- a/src/main/scala/scoverage/ScoverageSbtPlugin.scala +++ b/src/main/scala/scoverage/ScoverageSbtPlugin.scala @@ -67,6 +67,7 @@ object ScoverageSbtPlugin extends AutoPlugin { override def projectSettings: Seq[Setting[_]] = Seq( ivyConfigurations += ScoveragePluginConfig, + coverageDeleteMeasurements := coverageDeleteMeasurements0.value, coverageReport := coverageReport0.value, coverageAggregate := coverageAggregate0.value, coverageAggregate / aggregate := false, @@ -251,11 +252,19 @@ object ScoverageSbtPlugin extends AutoPlugin { sjsClassifier getOrElse "" } + private lazy val coverageDeleteMeasurements0 = Def.task { + val dataDir = coverageDataDir.value + implicit val log: Logger = streams.value.log + + log.info("Deleting existing coverage measurements...") + IOUtils.findMeasurementFiles(dataDir).foreach(IO.delete) + } + private lazy val coverageReport0 = Def.task { val target = coverageDataDir.value implicit val log: Logger = streams.value.log - log.info(s"Waiting for measurement data to sync...") + log.info("Waiting for measurement data to sync...") if (System.getProperty("os.name").toLowerCase.contains("windows")) { Thread.sleep( 1000