Skip to content

Commit b3e00f5

Browse files
Add support for multiple coverage files passed as argument
1 parent 115dd71 commit b3e00f5

File tree

2 files changed

+47
-21
lines changed

2 files changed

+47
-21
lines changed

src/Lib/IO/MetricsFactory.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,10 @@ private static function mergeFileMetrics(FileMetric $existingMetric, FileMetric
151151
$metricCovered = $metric->getCoveredStatements();
152152
$existingMetric->setCoveredStatements(array_merge($existingCovered, array_diff($metricCovered, $existingCovered)));
153153
$existingMetric->setMethods($existingMetricMethods);
154-
$coveragePercentage = $existingMetric->getStatements() === 0 ?
155-
100 :
156-
round(count($existingMetric->getCoveredStatements()) / $existingMetric->getStatements() * 100, self::COVERAGE_PERCENTAGE_PRECISION);
154+
$coveragePercentage = round(
155+
count($existingMetric->getCoveredStatements()) / $existingMetric->getStatements() * 100,
156+
self::COVERAGE_PERCENTAGE_PRECISION
157+
);
157158
$existingMetric->setCoverage($coveragePercentage);
158159
}
159160
}

tests/Unit/Lib/IO/MetricsFactoryTest.php

+43-18
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class MetricsFactoryTest extends TestCase
1818
* @covers ::getFileMetrics
1919
* @covers ::getMethodMetrics
2020
* @covers ::mergeFileMetrics
21+
* @covers ::getCoveredStatements
2122
*/
2223
public function testGetFilesMetrics(): void
2324
{
@@ -33,16 +34,22 @@ public function testGetFilesMetrics(): void
3334
<metrics loc="11" ncloc="11" statements="4" coveredstatements="1"/>
3435
</file>
3536
<file name="/API\\Example2.php">
36-
<line num="1" type="method" name="methodName" count="1"/>
37-
<line num="2" type="stmt" count="1"/>
38-
<line num="3" type="stmt" count="1"/>
39-
<line num="4" type="stmt" count="1"/>
40-
<line num="5" type="stmt" count="1"/>
41-
<line num="6" type="stmt" count="1"/>
42-
<metrics loc="11" ncloc="11" statements="5" coveredstatements="5"/>
37+
<line num="1" type="method" name="methodName" count="0"/>
38+
<line num="2" type="stmt" count="0"/>
39+
<line num="3" type="stmt" count="0"/>
40+
<line num="4" type="stmt" count="0"/>
41+
<line num="5" type="stmt" count="0"/>
42+
<line num="6" type="stmt" count="0"/>
43+
<metrics loc="11" ncloc="11" statements="5" coveredstatements="0"/>
4344
</file>
4445
<file name="/API\\Example3.php">
45-
<metrics loc="11" ncloc="11" statements="50" coveredstatements="10"/>
46+
<metrics loc="11" ncloc="11" statements="0" coveredstatements="0"/>
47+
</file>
48+
<file name="/API\\Example4.php">
49+
<metrics loc="11" ncloc="11" statements="1" coveredstatements="1"/>
50+
</file>
51+
<file name="/API\\Example5.php">
52+
<metrics loc="11" ncloc="11" statements="2" coveredstatements="0"/>
4653
</file>
4754
</project>
4855
</coverage>';
@@ -62,13 +69,19 @@ public function testGetFilesMetrics(): void
6269
<metrics loc="11" ncloc="11" statements="4" coveredstatements="2"/>
6370
</file>
6471
<file name="/API\\Example2.php">
65-
<line num="1" type="method" name="methodName" count="0"/>
66-
<line num="2" type="stmt" count="0"/>
67-
<line num="3" type="stmt" count="0"/>
68-
<line num="4" type="stmt" count="0"/>
72+
<line num="1" type="method" name="methodName" count="1"/>
73+
<line num="2" type="stmt" count="1"/>
74+
<line num="3" type="stmt" count="1"/>
75+
<line num="4" type="stmt" count="1"/>
6976
<line num="5" type="stmt" count="0"/>
70-
<line num="6" type="stmt" count="0"/>
71-
<metrics loc="11" ncloc="11" statements="5" coveredstatements="5"/>
77+
<line num="6" type="stmt" count="1"/>
78+
<metrics loc="11" ncloc="11" statements="5" coveredstatements="4"/>
79+
</file>
80+
<file name="/API\\Example4.php">
81+
<metrics loc="11" ncloc="11" statements="0" coveredstatements="0"/>
82+
</file>
83+
<file name="/API\\Example5.php">
84+
<metrics loc="11" ncloc="11" statements="2" coveredstatements="2"/>
7285
</file>
7386
</project>
7487
</coverage>';
@@ -77,7 +90,7 @@ public function testGetFilesMetrics(): void
7790
$dom2->loadXML($xml2);
7891

7992
$metrics = MetricsFactory::getFilesMetrics([$dom1, $dom2]);
80-
static::assertCount(3, $metrics);
93+
static::assertCount(5, $metrics);
8194

8295
$metric = $metrics['/API/Example.php'];
8396
static::assertSame('/API/Example.php', $metric->getFilepath());
@@ -92,13 +105,25 @@ public function testGetFilesMetrics(): void
92105
$metric = $metrics['/API/Example2.php'];
93106
static::assertSame('/API/Example2.php', $metric->getFilepath());
94107
static::assertCount(1, $metric->getMethods());
95-
static::assertSame(100.0, $metric->getCoverage());
96-
static::assertSame([2, 3, 4, 5, 6], $metric->getCoveredStatements());
108+
static::assertSame(80.0, $metric->getCoverage());
109+
static::assertSame([2, 3, 4, 6], $metric->getCoveredStatements());
97110

98111
$metric = $metrics['/API/Example3.php'];
99112
static::assertSame('/API/Example3.php', $metric->getFilepath());
100113
static::assertSame([], $metric->getMethods());
101-
static::assertSame(20.0, $metric->getCoverage());
114+
static::assertSame(100.0, $metric->getCoverage());
115+
static::assertSame([], $metric->getCoveredStatements());
116+
117+
$metric = $metrics['/API/Example4.php'];
118+
static::assertSame('/API/Example4.php', $metric->getFilepath());
119+
static::assertSame([], $metric->getMethods());
120+
static::assertSame(100.0, $metric->getCoverage());
121+
static::assertSame([], $metric->getCoveredStatements());
122+
123+
$metric = $metrics['/API/Example5.php'];
124+
static::assertSame('/API/Example5.php', $metric->getFilepath());
125+
static::assertSame([], $metric->getMethods());
126+
static::assertSame(100.0, $metric->getCoverage());
102127
static::assertSame([], $metric->getCoveredStatements());
103128
}
104129

0 commit comments

Comments
 (0)