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