Skip to content

Commit 8adf337

Browse files
Closes #1131
1 parent 6606fb0 commit 8adf337

File tree

4 files changed

+28
-10
lines changed

4 files changed

+28
-10
lines changed

ChangeLog-11.0.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ All notable changes are documented in this file using the [Keep a CHANGELOG](htt
77
### Fixed
88

99
* [#1092](https://github.com/sebastianbergmann/php-code-coverage/issues/1092): Error in `DOMDocument::saveXML()` is not handled
10+
* [#1131](https://github.com/sebastianbergmann/php-code-coverage/issues/1131): Invalid XML generated when both PCOV and Xdebug are loaded
1011

1112
## [11.0.11] - 2025-08-27
1213

src/CodeCoverage.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
use SebastianBergmann\CodeCoverage\Data\ProcessedCodeCoverageData;
2626
use SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData;
2727
use SebastianBergmann\CodeCoverage\Driver\Driver;
28+
use SebastianBergmann\CodeCoverage\Driver\PcovDriver;
29+
use SebastianBergmann\CodeCoverage\Driver\XdebugDriver;
2830
use SebastianBergmann\CodeCoverage\Node\Builder;
2931
use SebastianBergmann\CodeCoverage\Node\Directory;
3032
use SebastianBergmann\CodeCoverage\StaticAnalysis\CachingFileAnalyser;
@@ -377,6 +379,22 @@ public function detectsDeadCode(): bool
377379
return $this->driver->detectsDeadCode();
378380
}
379381

382+
/**
383+
* @internal
384+
*/
385+
public function driverIsPcov(): bool
386+
{
387+
return $this->driver instanceof PcovDriver;
388+
}
389+
390+
/**
391+
* @internal
392+
*/
393+
public function driverIsXdebug(): bool
394+
{
395+
return $this->driver instanceof XdebugDriver;
396+
}
397+
380398
/**
381399
* @throws ReflectionException
382400
* @throws UnintentionallyCoveredCodeException

src/Report/Xml/BuildInformation.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use function phpversion;
1414
use DateTimeImmutable;
1515
use DOMElement;
16+
use SebastianBergmann\CodeCoverage\CodeCoverage;
1617
use SebastianBergmann\Environment\Runtime;
1718

1819
/**
@@ -27,7 +28,7 @@ public function __construct(DOMElement $contextNode)
2728
$this->contextNode = $contextNode;
2829
}
2930

30-
public function setRuntimeInformation(Runtime $runtime): void
31+
public function setRuntimeInformation(Runtime $runtime, CodeCoverage $coverage): void
3132
{
3233
$runtimeNode = $this->nodeByName('runtime');
3334

@@ -37,14 +38,12 @@ public function setRuntimeInformation(Runtime $runtime): void
3738

3839
$driverNode = $this->nodeByName('driver');
3940

40-
if ($runtime->hasXdebug()) {
41-
$driverNode->setAttribute('name', 'xdebug');
42-
$driverNode->setAttribute('version', phpversion('xdebug'));
43-
}
44-
45-
if ($runtime->hasPCOV()) {
41+
if ($coverage->driverIsPcov()) {
4642
$driverNode->setAttribute('name', 'pcov');
4743
$driverNode->setAttribute('version', phpversion('pcov'));
44+
} elseif ($coverage->driverIsXdebug()) {
45+
$driverNode->setAttribute('name', 'xdebug');
46+
$driverNode->setAttribute('version', phpversion('xdebug'));
4847
}
4948
}
5049

src/Report/Xml/Facade.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,17 @@ public function process(CodeCoverage $coverage, string $target): void
6464
$coverage->getReport()->name(),
6565
);
6666

67-
$this->setBuildInformation();
67+
$this->setBuildInformation($coverage);
6868
$this->processTests($coverage->getTests());
6969
$this->processDirectory($report, $this->project);
7070

7171
$this->saveDocument($this->project->asDom(), 'index');
7272
}
7373

74-
private function setBuildInformation(): void
74+
private function setBuildInformation(CodeCoverage $coverage): void
7575
{
7676
$buildNode = $this->project->buildInformation();
77-
$buildNode->setRuntimeInformation(new Runtime);
77+
$buildNode->setRuntimeInformation(new Runtime, $coverage);
7878
$buildNode->setBuildTime(new DateTimeImmutable);
7979
$buildNode->setGeneratorVersions($this->phpUnitVersion, Version::id());
8080
}

0 commit comments

Comments
 (0)