Skip to content

Commit 0e75f25

Browse files
author
Oleksii Lisikh
committed
Fixed issue when reports were aggregated improperly
1 parent 0484592 commit 0e75f25

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package org.scoverage
22

33
import org.gradle.api.DefaultTask
4+
import org.gradle.api.provider.ListProperty
45
import org.gradle.api.provider.Property
56
import org.gradle.api.tasks.Input
67
import org.gradle.api.tasks.OutputDirectory
78
import org.gradle.api.tasks.TaskAction
9+
import scala.collection.JavaConverters
10+
import scoverage.IOUtils
811
import scoverage.report.CoverageAggregator
912

1013
class ScoverageAggregate extends DefaultTask {
@@ -14,6 +17,9 @@ class ScoverageAggregate extends DefaultTask {
1417
@OutputDirectory
1518
final Property<File> reportDir = project.objects.property(File)
1619

20+
@Input
21+
final ListProperty<File> dirsToAggregateFrom = project.objects.listProperty(File)
22+
1723
@Input
1824
final Property<Boolean> deleteReportsOnAggregation = project.objects.property(Boolean)
1925

@@ -27,12 +33,24 @@ class ScoverageAggregate extends DefaultTask {
2733
@Input
2834
final Property<Boolean> coverageDebug = project.objects.property(Boolean)
2935

36+
ScoverageAggregate() {
37+
dirsToAggregateFrom.set([])
38+
}
39+
3040
@TaskAction
3141
def aggregate() {
3242
runner.run {
3343
def rootDir = project.projectDir
3444

35-
def coverage = CoverageAggregator.aggregate(rootDir, deleteReportsOnAggregation.get())
45+
def coverage
46+
if (dirsToAggregateFrom.get().isEmpty()) {
47+
coverage = CoverageAggregator.aggregate(rootDir, deleteReportsOnAggregation.get())
48+
} else {
49+
def reportFiles = dirsToAggregateFrom.get().collectMany {
50+
JavaConverters.seqAsJavaList(IOUtils.reportFileSearch(it, IOUtils.isReportFile()))
51+
}
52+
coverage = CoverageAggregator.aggregate(JavaConverters.asScalaBuffer(reportFiles), deleteReportsOnAggregation.get())
53+
}
3654

3755
reportDir.get().deleteDir()
3856

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,16 @@ class ScoveragePlugin implements Plugin<PluginAware> {
143143
}
144144

145145
globalReportTask.configure {
146+
def reportDirs = reportTasks.findResults { it.reportDir.get() }
147+
146148
dependsOn reportTasks
147-
onlyIf { reportTasks.any { it.reportDir.get().list() } }
149+
onlyIf { reportDirs.any { it.list() } }
150+
148151
group = 'verification'
149152
runner = scoverageRunner
150153
reportDir = extension.reportDir
151-
deleteReportsOnAggregation = extension.deleteReportsOnAggregation
154+
dirsToAggregateFrom = reportDirs
155+
deleteReportsOnAggregation = false
152156
coverageOutputCobertura = extension.coverageOutputCobertura
153157
coverageOutputXML = extension.coverageOutputXML
154158
coverageOutputHTML = extension.coverageOutputHTML

0 commit comments

Comments
 (0)