Skip to content

Commit 4e49a1b

Browse files
committed
scoverage 1.4 aggregates from the data directories
1 parent f05db1e commit 4e49a1b

File tree

3 files changed

+16
-34
lines changed

3 files changed

+16
-34
lines changed

src/main/groovy/org/scoverage/ScoverageAggregate.groovy

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import org.gradle.api.tasks.OutputDirectory
88
import org.gradle.api.tasks.TaskAction
99
// don't use scala.collection.JavaConverters as it breaks backward compatibility with scala 2.11
1010
import scala.collection.JavaConversions
11-
import scoverage.IOUtils
1211
import scoverage.report.CoverageAggregator
1312

1413
class ScoverageAggregate extends DefaultTask {
@@ -35,29 +34,20 @@ class ScoverageAggregate extends DefaultTask {
3534
final Property<Boolean> coverageDebug = project.objects.property(Boolean)
3635

3736
ScoverageAggregate() {
38-
dirsToAggregateFrom.set([])
37+
dirsToAggregateFrom.set([project.extensions.scoverage.dataDir.get()])
3938
}
4039

4140
@TaskAction
4241
def aggregate() {
4342
runner.run {
44-
def rootDir = project.projectDir
45-
46-
def coverage
47-
if (dirsToAggregateFrom.get().isEmpty()) {
48-
coverage = CoverageAggregator.aggregate(rootDir, deleteReportsOnAggregation.get())
49-
} else {
50-
def reportFiles = dirsToAggregateFrom.get().collectMany {
51-
JavaConversions.seqAsJavaList(IOUtils.reportFileSearch(it, IOUtils.isReportFile()))
52-
}
53-
coverage = CoverageAggregator.aggregate(JavaConversions.asScalaBuffer(reportFiles), deleteReportsOnAggregation.get())
54-
}
55-
5643
reportDir.get().deleteDir()
44+
reportDir.get().mkdirs()
45+
46+
def coverage = CoverageAggregator.aggregate(JavaConversions.asScalaBuffer(dirsToAggregateFrom.get()))
5747

5848
if (coverage.nonEmpty()) {
5949
new ScoverageWriter(project.logger).write(
60-
rootDir,
50+
project.projectDir,
6151
reportDir.get(),
6252
coverage.get(),
6353
coverageOutputCobertura.get(),

src/main/groovy/org/scoverage/ScoveragePlugin.groovy

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,15 +150,15 @@ class ScoveragePlugin implements Plugin<PluginAware> {
150150
}
151151

152152
globalReportTask.configure {
153-
def reportDirs = reportTasks.findResults { it.reportDir.get() }
153+
def dataDirs = reportTasks.findResults { it.dataDir.get() }
154154

155155
dependsOn reportTasks
156-
onlyIf { reportDirs.any { it.list() } }
156+
onlyIf { dataDirs.any { it.list() } }
157157

158158
group = 'verification'
159159
runner = scoverageRunner
160160
reportDir = extension.reportDir
161-
dirsToAggregateFrom = reportDirs
161+
dirsToAggregateFrom = dataDirs
162162
deleteReportsOnAggregation = false
163163
coverageOutputCobertura = extension.coverageOutputCobertura
164164
coverageOutputXML = extension.coverageOutputXML
@@ -186,10 +186,13 @@ class ScoveragePlugin implements Plugin<PluginAware> {
186186
}
187187

188188
def aggregationTask = project.tasks.create(AGGREGATE_NAME, ScoverageAggregate) {
189+
def dataDirs = allReportTasks.findResults { it.dirsToAggregateFrom.get() }.flatten()
190+
189191
dependsOn(allReportTasks)
190192
group = 'verification'
191193
runner = scoverageRunner
192194
reportDir = extension.reportDir
195+
dirsToAggregateFrom = dataDirs
193196
deleteReportsOnAggregation = extension.deleteReportsOnAggregation
194197
coverageOutputCobertura = extension.coverageOutputCobertura
195198
coverageOutputXML = extension.coverageOutputXML

src/main/groovy/org/scoverage/ScoverageReport.groovy

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,7 @@ import org.gradle.api.tasks.OutputDirectory
88
import org.gradle.api.tasks.TaskAction
99
// don't use scala.collection.JavaConverters as it breaks backward compatibility with scala 2.11
1010
import scala.collection.JavaConversions
11-
import scala.collection.Seq
12-
import scala.collection.Set
13-
import scoverage.Coverage
14-
import scoverage.IOUtils
15-
import scoverage.Serializer
11+
import scoverage.report.CoverageAggregator
1612

1713
@CacheableTask
1814
class ScoverageReport extends DefaultTask {
@@ -40,25 +36,18 @@ class ScoverageReport extends DefaultTask {
4036
@TaskAction
4137
def report() {
4238
runner.run {
39+
reportDir.get().delete()
4340
reportDir.get().mkdirs()
4441

45-
File coverageFile = Serializer.coverageFile(dataDir.get())
42+
def coverage = CoverageAggregator.aggregate(JavaConversions.asScalaBuffer(Arrays.asList(dataDir.get())))
4643

47-
if (!coverageFile.exists()) {
44+
if (coverage.isEmpty()) {
4845
project.logger.info("[scoverage] Could not find coverage file, skipping...")
4946
} else {
50-
File[] array = IOUtils.findMeasurementFiles(dataDir.get())
51-
Seq<File> measurementFiles = JavaConversions.asScalaBuffer(Arrays.asList(array))
52-
53-
Coverage coverage = Serializer.deserialize(coverageFile)
54-
55-
Set<Object> measurements = IOUtils.invoked(measurementFiles)
56-
coverage.apply(measurements)
57-
5847
new ScoverageWriter(project.logger).write(
5948
sources.get(),
6049
reportDir.get(),
61-
coverage,
50+
coverage.get(),
6251
coverageOutputCobertura.get(),
6352
coverageOutputXML.get(),
6453
coverageOutputHTML.get(),

0 commit comments

Comments
 (0)