Skip to content

Commit 08f0ac5

Browse files
committed
Updated reports to use coverageOutputXXXX flags
1 parent 86ae5e2 commit 08f0ac5

File tree

1 file changed

+38
-12
lines changed

1 file changed

+38
-12
lines changed

src/main/scala/scoverage/ScoverageSbtPlugin.scala

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
1919
lazy val coverageAggregate = taskKey[Unit]("aggregate reports from subprojects")
2020
val coverageExcludedPackages = settingKey[String]("regex for excluded packages")
2121
val coverageExcludedFiles = settingKey[String]("regex for excluded file paths")
22-
val coverageMinimumCoverage = settingKey[Double]("scoverage-minimum-coverage")
23-
val coverageFailOnMinimumCoverage = settingKey[Boolean]("if coverage is less than this value then fail build")
22+
val coverageMinimum = settingKey[Double]("scoverage-minimum-coverage")
23+
val coverageFailOnMinimum = settingKey[Boolean]("if coverage is less than this value then fail build")
2424
val coverageHighlighting = settingKey[Boolean]("enables range positioning for highlighting")
2525
val coverageOutputCobertua = settingKey[Boolean]("enables cobertura XML report generation")
2626
val coverageOutputXML = settingKey[Boolean]("enables xml report generation")
2727
val coverageOutputHTML = settingKey[Boolean]("enables html report generation")
28+
val coverageCleanSubprojectFiles = settingKey[Boolean]("removes subproject data after an aggregation")
2829
}
2930

3031
var enabled = false
@@ -47,7 +48,14 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
4748
Thread.sleep(1000) // have noticed some delay in writing on windows, hacky but works
4849

4950
loadCoverage(target, s) match {
50-
case Some(cov) => writeReports(target, baseDirectory.value, (scalaSource in Compile).value, cov, s)
51+
case Some(cov) => writeReports(target,
52+
baseDirectory.value,
53+
(scalaSource in Compile).value,
54+
cov,
55+
coverageOutputCobertua.value,
56+
coverageOutputXML.value,
57+
coverageOutputHTML.value,
58+
s)
5159
case None => s.log.warn("No coverage data, skipping reports")
5260
}
5361
},
@@ -60,9 +68,16 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
6068
val s = (streams in Global).value
6169
s.log.info(s"Aggregating coverage from subprojects...")
6270
val base = baseDirectory.value
63-
CoverageAggregator.aggregate(base) match {
71+
CoverageAggregator.aggregate(base, coverageCleanSubprojectFiles.value) match {
6472
case Some(cov) =>
65-
writeReports(crossTarget.value, base, (scalaSource in Compile).value, cov, s)
73+
writeReports(crossTarget.value,
74+
base,
75+
(scalaSource in Compile).value,
76+
cov,
77+
coverageOutputCobertua.value,
78+
coverageOutputXML.value,
79+
coverageOutputHTML.value,
80+
s)
6681
val cfmt = cov.statementCoverageFormatted
6782
s.log.info(s"Aggregation complete. Coverage was [$cfmt]")
6883
case None => s.log.warn("No subproject data to aggregate, skipping reports")
@@ -91,25 +106,33 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
91106

92107
coverageExcludedPackages := "",
93108
coverageExcludedFiles := "",
94-
coverageMinimumCoverage := 0, // default is no minimum
95-
coverageFailOnMinimumCoverage := false,
109+
coverageMinimum := 0, // default is no minimum
110+
coverageFailOnMinimum := false,
96111
coverageHighlighting := true,
97112
coverageOutputXML := true,
98113
coverageOutputHTML := true,
99114
coverageOutputCobertua := true,
115+
coverageCleanSubprojectFiles := true,
100116

101117
// disable parallel execution to work around "classes.bak" bug in SBT
102118
parallelExecution in Test := false
103119
)
104120

105121
private def postTestReport = {
106-
(crossTarget, baseDirectory, scalaSource in Compile, coverageMinimumCoverage, coverageFailOnMinimumCoverage, streams in Global) map {
122+
(crossTarget, baseDirectory, scalaSource in Compile, coverageMinimum, coverageFailOnMinimum, streams in Global) map {
107123
(target, baseDirectory, compileSource, min, failOnMin, streams) =>
108124
Tests.Cleanup {
109125
() => if (enabled) {
110126
loadCoverage(target, streams) foreach {
111127
c =>
112-
writeReports(target, baseDirectory, compileSource, c, streams)
128+
writeReports(target,
129+
baseDirectory,
130+
compileSource,
131+
c,
132+
coverageOutputCobertua.value,
133+
coverageOutputXML.value,
134+
coverageOutputHTML.value,
135+
streams)
113136
checkCoverage(c, streams, min, failOnMin)
114137
}
115138
()
@@ -141,6 +164,9 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
141164
baseDirectory: File,
142165
compileSourceDirectory: File,
143166
coverage: Coverage,
167+
coverageOutputCobertua: Boolean,
168+
coverageOutputXML: Boolean,
169+
coverageOutputHTML: Boolean,
144170
s: TaskStreams): Unit = {
145171
s.log.info(s"Generating scoverage reports...")
146172

@@ -149,18 +175,18 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
149175
coberturaDir.mkdirs()
150176
reportDir.mkdirs()
151177

152-
if (coverageOutputCobertua.value) {
178+
if (coverageOutputCobertua) {
153179
s.log.info(s"Written Cobertura report [${coberturaDir.getAbsolutePath}/cobertura.xml]")
154180
new CoberturaXmlWriter(baseDirectory, coberturaDir).write(coverage)
155181
}
156182

157-
if (coverageOutputXML.value) {
183+
if (coverageOutputXML) {
158184
s.log.info(s"Written XML coverage report [${reportDir.getAbsolutePath}/scoverage.xml]")
159185
new ScoverageXmlWriter(compileSourceDirectory, reportDir, false).write(coverage)
160186
new ScoverageXmlWriter(compileSourceDirectory, reportDir, true).write(coverage)
161187
}
162188

163-
if (coverageOutputHTML.value) {
189+
if (coverageOutputHTML) {
164190
s.log.info(s"Written HTML coverage report [${reportDir.getAbsolutePath}/index.html]")
165191
new ScoverageHtmlWriter(compileSourceDirectory, reportDir).write(coverage)
166192
}

0 commit comments

Comments
 (0)