Skip to content

Commit 652853e

Browse files
jiripudildg
authored andcommitted
CodeCoverage: support Xdebug 3 (#424)
1 parent 10a9b57 commit 652853e

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

src/Runner/CliTester.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,15 @@ private function prepareCodeCoverage(Runner $runner): string
236236
file_put_contents($this->options['--coverage'], '');
237237
$file = realpath($this->options['--coverage']);
238238

239-
[$engine] = reset($engines);
239+
[$engine, $version] = reset($engines);
240240

241241
$runner->setEnvironmentVariable(Environment::COVERAGE, $file);
242242
$runner->setEnvironmentVariable(Environment::COVERAGE_ENGINE, $engine);
243243

244+
if ($engine === CodeCoverage\Collector::ENGINE_XDEBUG && version_compare($version, '3.0.0', '>=')) {
245+
$runner->addPhpIniOption('xdebug.mode', ltrim(ini_get('xdebug.mode') . ',coverage', ','));
246+
}
247+
244248
if ($engine === CodeCoverage\Collector::ENGINE_PCOV && count($this->options['--coverage-src'])) {
245249
$runner->addPhpIniOption('pcov.directory', Helpers::findCommonDirectory($this->options['--coverage-src']));
246250
}

tests/CodeCoverage/Collector.phpt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,14 @@ $engines = array_filter(CodeCoverage\Collector::detectEngines(), function (array
1616
if (count($engines) < 1) {
1717
Tester\Environment::skip('Requires Xdebug or PHPDB SAPI.');
1818
}
19-
[$engine] = reset($engines);
19+
[$engine, $version] = reset($engines);
20+
21+
if ($engine === CodeCoverage\Collector::ENGINE_XDEBUG
22+
&& version_compare($version, '3.0.0', '>=')
23+
&& strpos(ini_get('xdebug.mode'), 'coverage') === false
24+
) {
25+
Tester\Environment::skip('Requires xdebug.mode=coverage with Xdebug 3.');
26+
}
2027

2128
if (CodeCoverage\Collector::isStarted()) {
2229
Tester\Environment::skip('Requires running without --coverage.');

0 commit comments

Comments
 (0)