@@ -10,6 +10,7 @@ private function __construct(
1010 private readonly float $ actualMinCoverage ,
1111 private readonly int $ numberOfTrackedLines ,
1212 private readonly int $ numberOfCoveredLines ,
13+ private readonly bool $ exitOnLowCoverage
1314 ) {
1415 }
1516
@@ -47,19 +48,26 @@ public function getNumberOfCoveredLines(): int
4748 return $ this ->numberOfCoveredLines ;
4849 }
4950
51+ public function exitOnLowCoverage (): bool
52+ {
53+ return $ this ->exitOnLowCoverage ;
54+ }
55+
5056 public static function fromPatternAndNumbers (
5157 string $ pattern ,
5258 int $ expectedMinCoverage ,
5359 float $ actualMinCoverage ,
5460 int $ numberOfTrackedLines ,
5561 int $ numberOfCoveredLines ,
62+ bool $ exitOnLowCoverage
5663 ): self {
5764 return new self (
58- $ pattern ,
59- $ expectedMinCoverage ,
60- $ actualMinCoverage ,
61- $ numberOfTrackedLines ,
62- $ numberOfCoveredLines ,
65+ pattern: $ pattern ,
66+ expectedMinCoverage: $ expectedMinCoverage ,
67+ actualMinCoverage: $ actualMinCoverage ,
68+ numberOfTrackedLines: $ numberOfTrackedLines ,
69+ numberOfCoveredLines: $ numberOfCoveredLines ,
70+ exitOnLowCoverage: $ exitOnLowCoverage
6371 );
6472 }
6573
@@ -74,14 +82,17 @@ public static function mapFromRulesAndMetrics(
7482 CoverageMetric $ metricTotal = null ,
7583 ): array {
7684 $ results = [];
77- foreach ($ minCoverageRules ->getRules () as $ pattern => $ minCoverage ) {
78- if (MinCoverageRules::TOTAL === $ pattern && $ metricTotal ) {
85+ foreach ($ minCoverageRules ->getRules () as $ minCoverageRule ) {
86+ $ pattern = $ minCoverageRule ->getPattern ();
87+ $ minCoverage = $ minCoverageRule ->getMinCoverage ();
88+ if (MinCoverageRule::TOTAL === $ minCoverageRule ->getPattern () && $ metricTotal ) {
7989 $ results [] = MinCoverageResult::fromPatternAndNumbers (
80- $ pattern ,
81- $ minCoverage ,
82- $ metricTotal ->getTotalPercentageCoverage (),
83- $ metricTotal ->getNumberOfTrackedLines (),
84- $ metricTotal ->getNumberOfCoveredLines ()
90+ pattern: $ pattern ,
91+ expectedMinCoverage: $ minCoverage ,
92+ actualMinCoverage: $ metricTotal ->getTotalPercentageCoverage (),
93+ numberOfTrackedLines: $ metricTotal ->getNumberOfTrackedLines (),
94+ numberOfCoveredLines: $ metricTotal ->getNumberOfCoveredLines (),
95+ exitOnLowCoverage: $ minCoverageRule ->exitOnLowCoverage ()
8596 );
8697 continue ;
8798 }
@@ -97,16 +108,17 @@ public static function mapFromRulesAndMetrics(
97108 }
98109
99110 $ results [] = MinCoverageResult::fromPatternAndNumbers (
100- $ pattern ,
101- $ minCoverage ,
102- round ($ coveragePercentage , 2 ),
103- $ totalTrackedLines ,
104- $ totalCoveredLines
111+ pattern: $ pattern ,
112+ expectedMinCoverage: $ minCoverage ,
113+ actualMinCoverage: round ($ coveragePercentage , 2 ),
114+ numberOfTrackedLines: $ totalTrackedLines ,
115+ numberOfCoveredLines: $ totalCoveredLines ,
116+ exitOnLowCoverage: $ minCoverageRule ->exitOnLowCoverage ()
105117 );
106118 }
107119
108120 uasort ($ results , function (MinCoverageResult $ a , MinCoverageResult $ b ) {
109- if (MinCoverageRules ::TOTAL === $ a ->getPattern ()) {
121+ if (MinCoverageRule ::TOTAL === $ a ->getPattern ()) {
110122 return 1 ;
111123 }
112124 if ($ a ->getStatus () === $ b ->getStatus ()) {
0 commit comments