@@ -35,6 +35,12 @@ object ScoverageSbtPlugin extends AutoPlugin {
3535 coverageExcludedPackages := " " ,
3636 coverageExcludedFiles := " " ,
3737 coverageMinimum := 0 , // default is no minimum
38+ coverageMinimumStmtTotal := 0 ,
39+ coverageMinimumBranchTotal := 0 ,
40+ coverageMinimumStmtPerPackage := 0 ,
41+ coverageMinimumBranchPerPackage := 0 ,
42+ coverageMinimumStmtPerFile := 0 ,
43+ coverageMinimumBranchPerFile := 0 ,
3844 coverageFailOnMinimum := false ,
3945 coverageHighlighting := true ,
4046 coverageOutputXML := true ,
@@ -131,7 +137,7 @@ object ScoverageSbtPlugin extends AutoPlugin {
131137
132138 private lazy val coverageReport0 = Def .task {
133139 val target = crossTarget.value
134- val log = streams.value.log
140+ implicit val log = streams.value.log
135141
136142 log.info(s " Waiting for measurement data to sync... " )
137143 Thread .sleep(
@@ -153,18 +159,14 @@ object ScoverageSbtPlugin extends AutoPlugin {
153159 log
154160 )
155161
156- checkCoverage(
157- cov,
158- log,
159- coverageMinimum.value,
160- coverageFailOnMinimum.value
161- )
162+ CoverageMinimum .all.value
163+ .checkCoverage(cov, coverageFailOnMinimum.value)
162164 case None => log.warn(" No coverage data, skipping reports" )
163165 }
164166 }
165167
166168 private lazy val coverageAggregate0 = Def .task {
167- val log = streams.value.log
169+ implicit val log = streams.value.log
168170 log.info(s " Aggregating coverage from subprojects... " )
169171
170172 val dataDirs = crossTarget
@@ -187,12 +189,8 @@ object ScoverageSbtPlugin extends AutoPlugin {
187189 val cfmt = cov.statementCoverageFormatted
188190 log.info(s " Aggregation complete. Coverage was [ $cfmt] " )
189191
190- checkCoverage(
191- cov,
192- log,
193- coverageMinimum.value,
194- coverageFailOnMinimum.value
195- )
192+ CoverageMinimum .all.value
193+ .checkCoverage(cov, coverageFailOnMinimum.value)
196194 case None =>
197195 log.info(" No subproject data to aggregate, skipping reports" )
198196 }
@@ -326,34 +324,6 @@ object ScoverageSbtPlugin extends AutoPlugin {
326324 }
327325 }
328326
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-
357327 private def sourceEncoding (scalacOptions : Seq [String ]): Option [String ] = {
358328 val i = scalacOptions.indexOf(" -encoding" ) + 1
359329 if (i > 0 && i < scalacOptions.length) Some (scalacOptions(i)) else None
0 commit comments