Skip to content

Commit 1c95329

Browse files
Closes #4306
1 parent a4baf33 commit 1c95329

File tree

2 files changed

+48
-41
lines changed

2 files changed

+48
-41
lines changed

ChangeLog-8.5.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ All notable changes of the PHPUnit 8.5 release series are documented in this fil
77
### Fixed
88

99
* [#4299](https://github.com/sebastianbergmann/phpunit/issues/4299): "No tests executed" does not always result in exit code `1`
10+
* [#4306](https://github.com/sebastianbergmann/phpunit/issues/4306): Exceptions during code coverage driver initialization are not handled correctly
1011

1112
## [8.5.6] - 2020-06-15
1213

src/TextUI/TestRunner.php

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -503,59 +503,65 @@ public function doRun(Test $suite, array $arguments = [], array $warnings = [],
503503
}
504504

505505
if ($codeCoverageReports > 0) {
506-
$codeCoverage = new CodeCoverage(
507-
null,
508-
$this->codeCoverageFilter
509-
);
510-
511-
$codeCoverage->setUnintentionallyCoveredSubclassesWhitelist(
512-
[Comparator::class]
513-
);
514-
515-
$codeCoverage->setCheckForUnintentionallyCoveredCode(
516-
$arguments['strictCoverage']
517-
);
506+
try {
507+
$codeCoverage = new CodeCoverage(
508+
null,
509+
$this->codeCoverageFilter
510+
);
518511

519-
$codeCoverage->setCheckForMissingCoversAnnotation(
520-
$arguments['strictCoverage']
521-
);
512+
$codeCoverage->setUnintentionallyCoveredSubclassesWhitelist(
513+
[Comparator::class]
514+
);
522515

523-
if (isset($arguments['forceCoversAnnotation'])) {
524-
$codeCoverage->setForceCoversAnnotation(
525-
$arguments['forceCoversAnnotation']
516+
$codeCoverage->setCheckForUnintentionallyCoveredCode(
517+
$arguments['strictCoverage']
526518
);
527-
}
528519

529-
if (isset($arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'])) {
530-
$codeCoverage->setIgnoreDeprecatedCode(
531-
$arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage']
520+
$codeCoverage->setCheckForMissingCoversAnnotation(
521+
$arguments['strictCoverage']
532522
);
533-
}
534523

535-
if (isset($arguments['disableCodeCoverageIgnore'])) {
536-
$codeCoverage->setDisableIgnoredLines(true);
537-
}
524+
if (isset($arguments['forceCoversAnnotation'])) {
525+
$codeCoverage->setForceCoversAnnotation(
526+
$arguments['forceCoversAnnotation']
527+
);
528+
}
538529

539-
if (!empty($filterConfiguration['whitelist'])) {
540-
$codeCoverage->setAddUncoveredFilesFromWhitelist(
541-
$filterConfiguration['whitelist']['addUncoveredFilesFromWhitelist']
542-
);
530+
if (isset($arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'])) {
531+
$codeCoverage->setIgnoreDeprecatedCode(
532+
$arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage']
533+
);
534+
}
543535

544-
$codeCoverage->setProcessUncoveredFilesFromWhitelist(
545-
$filterConfiguration['whitelist']['processUncoveredFilesFromWhitelist']
546-
);
547-
}
536+
if (isset($arguments['disableCodeCoverageIgnore'])) {
537+
$codeCoverage->setDisableIgnoredLines(true);
538+
}
548539

549-
if (!$this->codeCoverageFilter->hasWhitelist()) {
550-
if (!$whitelistFromConfigurationFile && !$whitelistFromOption) {
551-
$this->writeMessage('Error', 'No whitelist is configured, no code coverage will be generated.');
552-
} else {
553-
$this->writeMessage('Error', 'Incorrect whitelist config, no code coverage will be generated.');
540+
if (!empty($filterConfiguration['whitelist'])) {
541+
$codeCoverage->setAddUncoveredFilesFromWhitelist(
542+
$filterConfiguration['whitelist']['addUncoveredFilesFromWhitelist']
543+
);
544+
545+
$codeCoverage->setProcessUncoveredFilesFromWhitelist(
546+
$filterConfiguration['whitelist']['processUncoveredFilesFromWhitelist']
547+
);
554548
}
555549

556-
$codeCoverageReports = 0;
550+
if (!$this->codeCoverageFilter->hasWhitelist()) {
551+
if (!$whitelistFromConfigurationFile && !$whitelistFromOption) {
552+
$this->writeMessage('Error', 'No whitelist is configured, no code coverage will be generated.');
553+
} else {
554+
$this->writeMessage('Error', 'Incorrect whitelist config, no code coverage will be generated.');
555+
}
556+
557+
$codeCoverageReports = 0;
557558

558-
unset($codeCoverage);
559+
unset($codeCoverage);
560+
}
561+
} catch (CodeCoverageException $e) {
562+
$this->writeMessage('Error', $e->getMessage());
563+
564+
$codeCoverageReports = 0;
559565
}
560566
}
561567

0 commit comments

Comments
 (0)