|
36 | 36 | import scoverage.domain.Coverage;
|
37 | 37 | import scoverage.domain.CoverageMetrics;
|
38 | 38 | import scoverage.domain.DoubleFormat;
|
| 39 | +import scoverage.domain.MeasuredFile; |
| 40 | +import scoverage.domain.MeasuredPackage; |
39 | 41 | import scoverage.reporter.IOUtils;
|
40 | 42 | import scoverage.serialize.Serializer;
|
41 | 43 |
|
@@ -94,6 +96,46 @@ public class SCoverageCheckMojo
|
94 | 96 | @Parameter( property = "scoverage.minimumCoverageBranchTotal", defaultValue = "0" )
|
95 | 97 | private Double minimumCoverageBranchTotal;
|
96 | 98 |
|
| 99 | + /** |
| 100 | + * Required minimum per-package statement coverage. |
| 101 | + * <br> |
| 102 | + * <br> |
| 103 | + * See <a href="https://github.com/scoverage/sbt-scoverage#minimum-coverage">https://github.com/scoverage/sbt-scoverage#minimum-coverage</a> for additional documentation. |
| 104 | + * <br> |
| 105 | + */ |
| 106 | + @Parameter( property = "scoverage.minimumCoverageStmtPerPackage", defaultValue = "0" ) |
| 107 | + private Double minimumCoverageStmtPerPackage; |
| 108 | + |
| 109 | + /** |
| 110 | + * Required minimum per-package branch coverage. |
| 111 | + * <br> |
| 112 | + * <br> |
| 113 | + * See <a href="https://github.com/scoverage/sbt-scoverage#minimum-coverage">https://github.com/scoverage/sbt-scoverage#minimum-coverage</a> for additional documentation. |
| 114 | + * <br> |
| 115 | + */ |
| 116 | + @Parameter( property = "scoverage.minimumCoverageBranchPerPackage", defaultValue = "0" ) |
| 117 | + private Double minimumCoverageBranchPerPackage; |
| 118 | + |
| 119 | + /** |
| 120 | + * Required minimum per-file statement coverage. |
| 121 | + * <br> |
| 122 | + * <br> |
| 123 | + * See <a href="https://github.com/scoverage/sbt-scoverage#minimum-coverage">https://github.com/scoverage/sbt-scoverage#minimum-coverage</a> for additional documentation. |
| 124 | + * <br> |
| 125 | + */ |
| 126 | + @Parameter( property = "scoverage.minimumCoverageStmtPerFile", defaultValue = "0" ) |
| 127 | + private Double minimumCoverageStmtPerFile; |
| 128 | + |
| 129 | + /** |
| 130 | + * Required minimum per-file branch coverage. |
| 131 | + * <br> |
| 132 | + * <br> |
| 133 | + * See <a href="https://github.com/scoverage/sbt-scoverage#minimum-coverage">https://github.com/scoverage/sbt-scoverage#minimum-coverage</a> for additional documentation. |
| 134 | + * <br> |
| 135 | + */ |
| 136 | + @Parameter( property = "scoverage.minimumCoverageBranchPerFile", defaultValue = "0" ) |
| 137 | + private Double minimumCoverageBranchPerFile; |
| 138 | + |
97 | 139 | /**
|
98 | 140 | * Fail the build if minimum coverage was not reached.
|
99 | 141 | * <br>
|
@@ -186,6 +228,18 @@ public void execute() throws MojoFailureException
|
186 | 228 |
|
187 | 229 | boolean ok = checkCoverage( getLog(), "Total", coverage,
|
188 | 230 | minimumCoverage, minimumCoverageBranchTotal, true );
|
| 231 | + for ( MeasuredPackage pkgCoverage : CollectionConverters.asJava( coverage.packages() ) ) |
| 232 | + { |
| 233 | + if ( !checkCoverage( getLog(), "Package:" + pkgCoverage.name(), pkgCoverage, |
| 234 | + minimumCoverageStmtPerPackage, minimumCoverageBranchPerPackage, false ) ) |
| 235 | + ok = false; |
| 236 | + } |
| 237 | + for ( MeasuredFile fileCoverage : CollectionConverters.asJava( coverage.files() ) ) |
| 238 | + { |
| 239 | + if ( !checkCoverage( getLog(), "File:" + fileCoverage.filename(), fileCoverage, |
| 240 | + minimumCoverageStmtPerFile, minimumCoverageBranchPerFile, false ) ) |
| 241 | + ok = false; |
| 242 | + } |
189 | 243 |
|
190 | 244 | if ( !ok && failOnMinimumCoverage )
|
191 | 245 | {
|
|
0 commit comments