Skip to content

Commit 09c97ca

Browse files
kabelsebastianbergmann
authored andcommitted
Fix PHPT coverage from phpdbg
Fixes #3111. Stop using auto_append_file as it doesn't work with the phpdbg sapi. Instead, the job's code is written to a temp file and the coverage instrumentation code takes over the code.
1 parent 7a7c736 commit 09c97ca

File tree

2 files changed

+11
-18
lines changed

2 files changed

+11
-18
lines changed

src/Runner/PhptTestCase.php

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public function run(TestResult $result = null): TestResult
150150
}
151151

152152
if ($result->getCollectCodeCoverageInformation()) {
153-
$this->renderForCoverage($settings);
153+
$this->renderForCoverage($code);
154154
}
155155

156156
Timer::start();
@@ -488,7 +488,7 @@ private function getCoverageFiles(): array
488488
];
489489
}
490490

491-
private function renderForCoverage(array &$settings): void
491+
private function renderForCoverage(string &$job): void
492492
{
493493
$files = $this->getCoverageFiles();
494494

@@ -520,24 +520,23 @@ private function renderForCoverage(array &$settings): void
520520
'phar' => $phar,
521521
'globals' => $globals,
522522
'job' => $files['job'],
523-
'coverageFile' => $files['coverage'],
524-
'autoPrependFile' => \var_export(
525-
!empty($settings['auto_prepend_file']) ? $settings['auto_prepend_file'] : false,
526-
true
527-
)
523+
'coverageFile' => $files['coverage']
528524
]
529525
);
530526

531-
\file_put_contents($files['job'], $template->render());
532-
533-
$settings['auto_prepend_file'] = $files['job'];
527+
\file_put_contents($files['job'], $job);
528+
$job = $template->render();
534529
}
535530

536531
private function cleanupForCoverage(): array
537532
{
538533
$files = $this->getCoverageFiles();
539534
$coverage = @\unserialize(\file_get_contents($files['coverage']));
540535

536+
if ($coverage === false) {
537+
$coverage = [];
538+
}
539+
541540
foreach ($files as $file) {
542541
@\unlink($file);
543542
}

src/Util/PHP/Template/PhptTestCase.tpl.dist

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use SebastianBergmann\CodeCoverage\CodeCoverage;
33

44
$composerAutoload = {composerAutoload};
55
$phar = {phar};
6-
$autoPrependFile = {autoPrependFile};
76

87
ob_start();
98

@@ -28,7 +27,7 @@ if (class_exists('SebastianBergmann\CodeCoverage\CodeCoverage')) {
2827
$coverage->start(__FILE__);
2928
}
3029

31-
register_shutdown_function(function() use ($coverage, $autoPrependFile) {
30+
register_shutdown_function(function() use ($coverage) {
3231
$output = null;
3332
if ($coverage) {
3433
$output = $coverage->stop();
@@ -38,9 +37,4 @@ register_shutdown_function(function() use ($coverage, $autoPrependFile) {
3837

3938
ob_end_clean();
4039

41-
if ($autoPrependFile) {
42-
require $autoPrependFile;
43-
$includes = get_included_files();
44-
$GLOBALS['__PHPUNIT_ISOLATION_BLACKLIST'][] = array_pop($includes);
45-
unset($includes);
46-
}
40+
require '{job}';

0 commit comments

Comments
 (0)