@@ -35,6 +35,12 @@ object ScoverageSbtPlugin extends AutoPlugin {
35
35
coverageExcludedPackages := " " ,
36
36
coverageExcludedFiles := " " ,
37
37
coverageMinimum := 0 , // default is no minimum
38
+ coverageMinimumStmtTotal := 0 ,
39
+ coverageMinimumBranchTotal := 0 ,
40
+ coverageMinimumStmtPerPackage := 0 ,
41
+ coverageMinimumBranchPerPackage := 0 ,
42
+ coverageMinimumStmtPerFile := 0 ,
43
+ coverageMinimumBranchPerFile := 0 ,
38
44
coverageFailOnMinimum := false ,
39
45
coverageHighlighting := true ,
40
46
coverageOutputXML := true ,
@@ -131,7 +137,7 @@ object ScoverageSbtPlugin extends AutoPlugin {
131
137
132
138
private lazy val coverageReport0 = Def .task {
133
139
val target = crossTarget.value
134
- val log = streams.value.log
140
+ implicit val log = streams.value.log
135
141
136
142
log.info(s " Waiting for measurement data to sync... " )
137
143
Thread .sleep(
@@ -153,18 +159,14 @@ object ScoverageSbtPlugin extends AutoPlugin {
153
159
log
154
160
)
155
161
156
- checkCoverage(
157
- cov,
158
- log,
159
- coverageMinimum.value,
160
- coverageFailOnMinimum.value
161
- )
162
+ CoverageMinimum .all.value
163
+ .checkCoverage(cov, coverageFailOnMinimum.value)
162
164
case None => log.warn(" No coverage data, skipping reports" )
163
165
}
164
166
}
165
167
166
168
private lazy val coverageAggregate0 = Def .task {
167
- val log = streams.value.log
169
+ implicit val log = streams.value.log
168
170
log.info(s " Aggregating coverage from subprojects... " )
169
171
170
172
val dataDirs = crossTarget
@@ -187,12 +189,8 @@ object ScoverageSbtPlugin extends AutoPlugin {
187
189
val cfmt = cov.statementCoverageFormatted
188
190
log.info(s " Aggregation complete. Coverage was [ $cfmt] " )
189
191
190
- checkCoverage(
191
- cov,
192
- log,
193
- coverageMinimum.value,
194
- coverageFailOnMinimum.value
195
- )
192
+ CoverageMinimum .all.value
193
+ .checkCoverage(cov, coverageFailOnMinimum.value)
196
194
case None =>
197
195
log.info(" No subproject data to aggregate, skipping reports" )
198
196
}
@@ -326,34 +324,6 @@ object ScoverageSbtPlugin extends AutoPlugin {
326
324
}
327
325
}
328
326
329
- private def checkCoverage (
330
- coverage : Coverage ,
331
- log : Logger ,
332
- min : Double ,
333
- failOnMin : Boolean
334
- ): Unit = {
335
-
336
- val cper = coverage.statementCoveragePercent
337
- val cfmt = coverage.statementCoverageFormatted
338
-
339
- // check for default minimum
340
- if (min > 0 ) {
341
- def is100 (d : Double ) = Math .abs(100 - d) <= 0.00001
342
-
343
- if (is100(min) && is100(cper)) {
344
- log.info(s " 100% Coverage ! " )
345
- } else if (min > cper) {
346
- log.error(s " Coverage is below minimum [ $cfmt% < $min%] " )
347
- if (failOnMin)
348
- throw new RuntimeException (" Coverage minimum was not reached" )
349
- } else {
350
- log.info(s " Coverage is above minimum [ $cfmt% > $min%] " )
351
- }
352
- }
353
-
354
- log.info(s " All done. Coverage was [ $cfmt%] " )
355
- }
356
-
357
327
private def sourceEncoding (scalacOptions : Seq [String ]): Option [String ] = {
358
328
val i = scalacOptions.indexOf(" -encoding" ) + 1
359
329
if (i > 0 && i < scalacOptions.length) Some (scalacOptions(i)) else None
0 commit comments