|
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