|
26 | 26 | */ |
27 | 27 | final class CodeCoverage |
28 | 28 | { |
| 29 | + private const UNCOVERED_FILES_FROM_WHITELIST = 'UNCOVERED_FILES_FROM_WHITELIST'; |
| 30 | + |
29 | 31 | /** |
30 | 32 | * @var Driver |
31 | 33 | */ |
@@ -288,49 +290,50 @@ public function append(RawCodeCoverageData $rawData, $id = null, bool $append = |
288 | 290 |
|
289 | 291 | $this->applyWhitelistFilter($rawData); |
290 | 292 | $this->applyIgnoredLinesFilter($rawData); |
| 293 | + |
291 | 294 | $this->data->initializeFilesThatAreSeenTheFirstTime($rawData); |
292 | 295 |
|
293 | 296 | if (!$append) { |
294 | 297 | return; |
295 | 298 | } |
296 | 299 |
|
297 | | - if ($id !== 'UNCOVERED_FILES_FROM_WHITELIST') { |
| 300 | + if ($id !== self::UNCOVERED_FILES_FROM_WHITELIST) { |
298 | 301 | $this->applyCoversAnnotationFilter( |
299 | 302 | $rawData, |
300 | 303 | $linesToBeCovered, |
301 | 304 | $linesToBeUsed, |
302 | 305 | $ignoreForceCoversAnnotation |
303 | 306 | ); |
304 | | - } |
305 | 307 |
|
306 | | - if (empty($rawData->getLineCoverage())) { |
307 | | - return; |
308 | | - } |
| 308 | + if (empty($rawData->getLineCoverage())) { |
| 309 | + return; |
| 310 | + } |
309 | 311 |
|
310 | | - $size = 'unknown'; |
311 | | - $status = -1; |
| 312 | + $size = 'unknown'; |
| 313 | + $status = -1; |
312 | 314 |
|
313 | | - if ($id instanceof TestCase) { |
314 | | - $_size = $id->getSize(); |
| 315 | + if ($id instanceof TestCase) { |
| 316 | + $_size = $id->getSize(); |
315 | 317 |
|
316 | | - if ($_size === Test::SMALL) { |
317 | | - $size = 'small'; |
318 | | - } elseif ($_size === Test::MEDIUM) { |
319 | | - $size = 'medium'; |
320 | | - } elseif ($_size === Test::LARGE) { |
| 318 | + if ($_size === Test::SMALL) { |
| 319 | + $size = 'small'; |
| 320 | + } elseif ($_size === Test::MEDIUM) { |
| 321 | + $size = 'medium'; |
| 322 | + } elseif ($_size === Test::LARGE) { |
| 323 | + $size = 'large'; |
| 324 | + } |
| 325 | + |
| 326 | + $status = $id->getStatus(); |
| 327 | + $id = \get_class($id) . '::' . $id->getName(); |
| 328 | + } elseif ($id instanceof PhptTestCase) { |
321 | 329 | $size = 'large'; |
| 330 | + $id = $id->getName(); |
322 | 331 | } |
323 | 332 |
|
324 | | - $status = $id->getStatus(); |
325 | | - $id = \get_class($id) . '::' . $id->getName(); |
326 | | - } elseif ($id instanceof PhptTestCase) { |
327 | | - $size = 'large'; |
328 | | - $id = $id->getName(); |
329 | | - } |
| 333 | + $this->tests[$id] = ['size' => $size, 'status' => $status]; |
330 | 334 |
|
331 | | - $this->tests[$id] = ['size' => $size, 'status' => $status]; |
332 | | - |
333 | | - $this->data->markCodeAsExecutedByTestCase($id, $rawData); |
| 335 | + $this->data->markCodeAsExecutedByTestCase($id, $rawData); |
| 336 | + } |
334 | 337 |
|
335 | 338 | $this->report = null; |
336 | 339 | } |
@@ -513,7 +516,7 @@ private function addUncoveredFilesFromWhitelist(): void |
513 | 516 | } |
514 | 517 | } |
515 | 518 |
|
516 | | - $this->append(RawCodeCoverageData::fromXdebugWithoutPathCoverage($data), 'UNCOVERED_FILES_FROM_WHITELIST'); |
| 519 | + $this->append(RawCodeCoverageData::fromXdebugWithoutPathCoverage($data), self::UNCOVERED_FILES_FROM_WHITELIST); |
517 | 520 | } |
518 | 521 |
|
519 | 522 | private function getLinesToBeIgnored(string $fileName): array |
@@ -869,28 +872,12 @@ private function initializeData(): void |
869 | 872 | } |
870 | 873 | } |
871 | 874 |
|
872 | | - $data = []; |
873 | | - |
874 | | - foreach ($this->driver->stop()->getLineCoverage() as $file => $fileCoverage) { |
875 | | - if ($this->filter->isFiltered($file)) { |
876 | | - continue; |
877 | | - } |
878 | | - |
879 | | - foreach (\array_keys($fileCoverage) as $key) { |
880 | | - if ($fileCoverage[$key] === Driver::LINE_EXECUTED) { |
881 | | - $fileCoverage[$key] = Driver::LINE_NOT_EXECUTED; |
882 | | - } |
883 | | - } |
884 | | - |
885 | | - $data[$file] = $fileCoverage; |
886 | | - } |
887 | | - |
888 | | - $this->append(RawCodeCoverageData::fromXdebugWithoutPathCoverage($data), 'UNCOVERED_FILES_FROM_WHITELIST'); |
889 | | - |
890 | 875 | // having now collected dead code for the entire whitelist, we can safely skip this data on subsequent runs |
891 | 876 | if ($this->driver->canDetectDeadCode()) { |
892 | 877 | $this->driver->disableDeadCodeDetection(); |
893 | 878 | } |
| 879 | + |
| 880 | + $this->append($this->driver->stop(), self::UNCOVERED_FILES_FROM_WHITELIST); |
894 | 881 | } |
895 | 882 | } |
896 | 883 |
|
|
0 commit comments