From 5237e3dd8dc5095973e7751d91791d8dffb92811 Mon Sep 17 00:00:00 2001 From: Richard Bradley Date: Wed, 19 Aug 2015 16:28:57 +0100 Subject: [PATCH 1/3] #132 clarify when reports are generated and when minimums are applied --- .../scala/scoverage/ScoverageSbtPlugin.scala | 50 ++++++------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/src/main/scala/scoverage/ScoverageSbtPlugin.scala b/src/main/scala/scoverage/ScoverageSbtPlugin.scala index 9bb352a7..8aff4cff 100644 --- a/src/main/scala/scoverage/ScoverageSbtPlugin.scala +++ b/src/main/scala/scoverage/ScoverageSbtPlugin.scala @@ -24,8 +24,6 @@ object ScoverageSbtPlugin extends AutoPlugin { commands += Command.command("coverage", "enable compiled code with instrumentation", "")(toggleCoverage(true)), commands += Command.command("coverageOff", "disable compiled code with instrumentation", "")(toggleCoverage(false)), coverageReport <<= coverageReport0, - testOptions in Test += postTestReport.value, - testOptions in IntegrationTest += postTestReport.value, coverageAggregate <<= coverageAggregate0, libraryDependencies ++= Seq( OrgScoverage % (ScalacRuntimeArtifact + "_" + scalaBinaryVersion.value) % ScoverageVersion % "provided" intransitive(), @@ -65,14 +63,18 @@ object ScoverageSbtPlugin extends AutoPlugin { Thread.sleep(1000) // have noticed some delay in writing on windows, hacky but works loadCoverage(target, log) match { - case Some(cov) => writeReports(target, - (sourceDirectories in Compile).value, - cov, - coverageOutputCobertura.value, - coverageOutputXML.value, - coverageOutputHTML.value, - coverageOutputDebug.value, - log) + case Some(cov) => + writeReports( + target, + (sourceDirectories in Compile).value, + cov, + coverageOutputCobertura.value, + coverageOutputXML.value, + coverageOutputHTML.value, + coverageOutputDebug.value, + log) + + checkCoverage(cov, log, coverageMinimum.value, coverageFailOnMinimum.value) case None => log.warn("No coverage data, skipping reports") } } @@ -84,7 +86,8 @@ object ScoverageSbtPlugin extends AutoPlugin { val xmlReportFiles = crossTarget.all(aggregateFilter).value map (_ / "scoverage-report" / Constants.XMLReportFilename) filter (_.isFile()) CoverageAggregator.aggregate(xmlReportFiles, coverageCleanSubprojectFiles.value) match { case Some(cov) => - writeReports(crossTarget.value, + writeReports( + crossTarget.value, sourceDirectories.all(aggregateFilter).value.flatten, cov, coverageOutputCobertura.value, @@ -94,6 +97,8 @@ object ScoverageSbtPlugin extends AutoPlugin { log) val cfmt = cov.statementCoverageFormatted log.info(s"Aggregation complete. Coverage was [$cfmt]") + + checkCoverage(cov, log, coverageMinimum.value, coverageFailOnMinimum.value) case None => log.info("No subproject data to aggregate, skipping reports") } @@ -113,29 +118,6 @@ object ScoverageSbtPlugin extends AutoPlugin { } } - private lazy val postTestReport = Def.task { - val log = streams.value.log - val target = crossTarget.value - Tests.Cleanup { - () => if (coverageEnabled.value) { - loadCoverage(target, log) foreach { c => - writeReports( - target, - (sourceDirectories in Compile).value, - c, - coverageOutputCobertura.value, - coverageOutputXML.value, - coverageOutputHTML.value, - coverageOutputDebug.value, - log - ) - checkCoverage(c, log, coverageMinimum.value, coverageFailOnMinimum.value) - } - () - } - } - } - private def scalaArgs(coverageEnabled: Boolean, pluginPath: File, target: File, From 1c806c82e4f1ba2bf658603e9238aa071b58cb44 Mon Sep 17 00:00:00 2001 From: Richard Bradley Date: Wed, 19 Aug 2015 16:29:16 +0100 Subject: [PATCH 2/3] #132 clarify when reports are generated and when minimums are applied README changes and version increment --- README.md | 11 +++++++++-- version.sbt | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 63cbee4d..2830742d 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ discussion on scoverage. Add the plugin to your build with the following in project/plugins.sbt: ```scala -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.3.1") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.3.2") ``` Then run the your tests with coverage enabled by entering: @@ -58,7 +58,11 @@ Next, the keys have been renamed slightly. The new names begin with coverageXXX, ## Multi project reports -By default, scoverage will generate reports for each project seperately. You can merge them into an aggregated report by invoking `sbt coverageAggregate`. Note, you must do this after all the coverage data is complete as a separate command, so you cannot do `sbt coverage test coverageAggregate` (at least until a way around this is found). +By default, scoverage will generate reports for each project seperately. You can merge them into an aggregated report by invoking `sbt coverageAggregate`. + +(Note, you must do this after all the coverage data is complete as a separate command, so you cannot do `sbt coverage test coverageAggregate` (at least until a way around this is found).) + +(You must have first run `sbt coverageReport` for `coverageAggregate` to work. It aggregates over the sub-projects' report xml rather than over the coverage data directly.) ## Exclude classes and packages @@ -94,6 +98,9 @@ coverageMinimum := 80 coverageFailOnMinimum := true ``` +These settings will be enforced when the reports are generated. +If you generate an aggregate report using `coverageAggregate` then these settings will apply to that report. + ## Highlighting If you are using Scala 2.11.1 or less, then highlighting will not work (due to this bug which was fixed in 2.11.2 https://github.com/scala/scala/pull/3799). In that case you must disable highlighting by adding the following to your build: diff --git a/version.sbt b/version.sbt index db225a1a..3664d647 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version in ThisBuild := "1.3.1" +version in ThisBuild := "1.3.2" From 5a9f9bde74d2aa59f2c60f2d5760c5c5a7dc69fa Mon Sep 17 00:00:00 2001 From: Richard Bradley Date: Fri, 21 Aug 2015 11:14:27 +0100 Subject: [PATCH 3/3] #132 update tests to reflect that coverageReport is now required to generate reports --- src/sbt-test/scoverage/bad-coverage/test | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sbt-test/scoverage/bad-coverage/test b/src/sbt-test/scoverage/bad-coverage/test index c70d2b1c..45cbbb60 100644 --- a/src/sbt-test/scoverage/bad-coverage/test +++ b/src/sbt-test/scoverage/bad-coverage/test @@ -1,4 +1,5 @@ # run scoverage > clean > coverage --> test +> test +-> coverageReport