Skip to content

Commit 5575925

Browse files
committedMar 3, 2015
1. All reports use all source root directories, not only "(scalaSource in Compile)", "baseDirectory" is not used anymore.
2. Aggregated report collects XML report files only from modules' {crossTarget}/"scoverage-report" directories (much faster).
1 parent ed59989 commit 5575925

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed
 

‎src/main/scala/scoverage/ScoverageSbtPlugin.scala

+15-16
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
3333

3434
import ScoverageKeys._
3535

36+
val aggregateFilter = ScopeFilter( inAnyProject, inConfigurations(Compile) ) // must be outside of the 'coverageAggregate' task (see: https://github.com/sbt/sbt/issues/1095 or https://github.com/sbt/sbt/issues/780)
37+
3638
override def trigger = allRequirements
3739
override lazy val projectSettings = Seq(
3840

@@ -49,8 +51,7 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
4951

5052
loadCoverage(target, s) match {
5153
case Some(cov) => writeReports(target,
52-
baseDirectory.value,
53-
(scalaSource in Compile).value,
54+
(sourceDirectories in Compile).value,
5455
cov,
5556
coverageOutputCobertua.value,
5657
coverageOutputXML.value,
@@ -68,12 +69,12 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
6869
coverageAggregate := {
6970
val s = (streams in Global).value
7071
s.log.info(s"Aggregating coverage from subprojects...")
71-
val base = baseDirectory.value
72-
CoverageAggregator.aggregate(base, coverageCleanSubprojectFiles.value) match {
72+
73+
val xmlReportFiles = crossTarget.all(aggregateFilter).value map (_ / "scoverage-report" / Constants.XMLReportFilename) filter (_.isFile())
74+
CoverageAggregator.aggregate(xmlReportFiles, coverageCleanSubprojectFiles.value) match {
7375
case Some(cov) =>
7476
writeReports(crossTarget.value,
75-
base,
76-
(scalaSource in Compile).value,
77+
sourceDirectories.all(aggregateFilter).value.flatten,
7778
cov,
7879
coverageOutputCobertua.value,
7980
coverageOutputXML.value,
@@ -125,15 +126,14 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
125126
)
126127

127128
private def postTestReport = {
128-
(crossTarget, baseDirectory, scalaSource in Compile, coverageMinimum, coverageFailOnMinimum, coverageOutputCobertua, coverageOutputXML, coverageOutputHTML, coverageOutputDebug, streams in Global) map {
129-
(target, baseDirectory, compileSource, min, failOnMin, outputCobertua, outputXML, outputHTML, coverageDebug, streams) =>
129+
(crossTarget, sourceDirectories in Compile, coverageMinimum, coverageFailOnMinimum, coverageOutputCobertua, coverageOutputXML, coverageOutputHTML, coverageOutputDebug, streams in Global) map {
130+
(target, compileSources, min, failOnMin, outputCobertua, outputXML, outputHTML, coverageDebug, streams) =>
130131
Tests.Cleanup {
131132
() => if (enabled) {
132133
loadCoverage(target, streams) foreach {
133134
c =>
134135
writeReports(target,
135-
baseDirectory,
136-
compileSource,
136+
compileSources,
137137
c,
138138
outputCobertua,
139139
outputXML,
@@ -168,8 +168,7 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
168168
}
169169

170170
private def writeReports(crossTarget: File,
171-
baseDirectory: File,
172-
compileSourceDirectory: File,
171+
compileSourceDirectories: Seq[File],
173172
coverage: Coverage,
174173
coverageOutputCobertua: Boolean,
175174
coverageOutputXML: Boolean,
@@ -185,20 +184,20 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
185184

186185
if (coverageOutputCobertua) {
187186
s.log.info(s"Written Cobertura report [${coberturaDir.getAbsolutePath}/cobertura.xml]")
188-
new CoberturaXmlWriter(baseDirectory, coberturaDir).write(coverage)
187+
new CoberturaXmlWriter(compileSourceDirectories, coberturaDir).write(coverage)
189188
}
190189

191190
if (coverageOutputXML) {
192191
s.log.info(s"Written XML coverage report [${reportDir.getAbsolutePath}/scoverage.xml]")
193-
new ScoverageXmlWriter(compileSourceDirectory, reportDir, false).write(coverage)
192+
new ScoverageXmlWriter(compileSourceDirectories, reportDir, false).write(coverage)
194193
if (coverageDebug) {
195-
new ScoverageXmlWriter(compileSourceDirectory, reportDir, true).write(coverage)
194+
new ScoverageXmlWriter(compileSourceDirectories, reportDir, true).write(coverage)
196195
}
197196
}
198197

199198
if (coverageOutputHTML) {
200199
s.log.info(s"Written HTML coverage report [${reportDir.getAbsolutePath}/index.html]")
201-
new ScoverageHtmlWriter(compileSourceDirectory, reportDir).write(coverage)
200+
new ScoverageHtmlWriter(compileSourceDirectories, reportDir).write(coverage)
202201
}
203202

204203
s.log.info("Coverage reports completed")

0 commit comments

Comments
 (0)
Please sign in to comment.