1
1
package org.scoverage
2
2
3
3
import org.gradle.api.DefaultTask
4
+ import org.gradle.api.provider.ListProperty
4
5
import org.gradle.api.provider.Property
5
6
import org.gradle.api.tasks.Input
6
7
import org.gradle.api.tasks.OutputDirectory
7
8
import org.gradle.api.tasks.TaskAction
9
+ import scala.collection.JavaConverters
10
+ import scoverage.IOUtils
8
11
import scoverage.report.CoverageAggregator
9
12
10
13
class ScoverageAggregate extends DefaultTask {
@@ -14,6 +17,9 @@ class ScoverageAggregate extends DefaultTask {
14
17
@OutputDirectory
15
18
final Property<File > reportDir = project. objects. property(File )
16
19
20
+ @Input
21
+ final ListProperty<File > dirsToAggregateFrom = project. objects. listProperty(File )
22
+
17
23
@Input
18
24
final Property<Boolean > deleteReportsOnAggregation = project. objects. property(Boolean )
19
25
@@ -27,12 +33,24 @@ class ScoverageAggregate extends DefaultTask {
27
33
@Input
28
34
final Property<Boolean > coverageDebug = project. objects. property(Boolean )
29
35
36
+ ScoverageAggregate () {
37
+ dirsToAggregateFrom. set([])
38
+ }
39
+
30
40
@TaskAction
31
41
def aggregate () {
32
42
runner. run {
33
43
def rootDir = project. projectDir
34
44
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
+ }
36
54
37
55
reportDir. get(). deleteDir()
38
56
0 commit comments