|
9 | 9 | */ |
10 | 10 | namespace SebastianBergmann\CodeCoverage\Report\Xml; |
11 | 11 |
|
| 12 | +use XMLWriter; |
12 | 13 | use function assert; |
13 | 14 | use function phpversion; |
14 | 15 | use DateTimeImmutable; |
|
20 | 21 | */ |
21 | 22 | final readonly class BuildInformation |
22 | 23 | { |
23 | | - private DOMElement $contextNode; |
24 | | - |
25 | 24 | public function __construct( |
26 | | - DOMElement $contextNode, |
| 25 | + XMLWriter $xmlWriter, |
27 | 26 | Runtime $runtime, |
28 | 27 | DateTimeImmutable $buildDate, |
29 | 28 | string $phpUnitVersion, |
30 | 29 | string $coverageVersion |
31 | 30 | ) { |
32 | | - $this->contextNode = $contextNode; |
33 | | - |
34 | | - $runtimeNode = $this->nodeByName('runtime'); |
35 | | - |
36 | | - $runtimeNode->setAttribute('name', $runtime->getName()); |
37 | | - $runtimeNode->setAttribute('version', $runtime->getVersion()); |
38 | | - $runtimeNode->setAttribute('url', $runtime->getVendorUrl()); |
39 | | - |
40 | | - $driverNode = $this->nodeByName('driver'); |
41 | | - |
| 31 | + $xmlWriter->startElement('build'); |
| 32 | + $xmlWriter->writeAttribute('time', $buildDate->format('D M j G:i:s T Y')); |
| 33 | + $xmlWriter->writeAttribute('phpunit', $phpUnitVersion); |
| 34 | + $xmlWriter->writeAttribute('coverage', $coverageVersion); |
| 35 | + |
| 36 | + $xmlWriter->startElement('runtime'); |
| 37 | + $xmlWriter->writeAttribute('name', $runtime->getName()); |
| 38 | + $xmlWriter->writeAttribute('version', $runtime->getVersion()); |
| 39 | + $xmlWriter->writeAttribute('url', $runtime->getVendorUrl()); |
| 40 | + $xmlWriter->endElement(); |
| 41 | + |
| 42 | + $xmlWriter->startElement('driver'); |
42 | 43 | if ($runtime->hasXdebug()) { |
43 | | - $driverNode->setAttribute('name', 'xdebug'); |
44 | | - $driverNode->setAttribute('version', phpversion('xdebug')); |
| 44 | + $xmlWriter->writeAttribute('name', 'xdebug'); |
| 45 | + $xmlWriter->writeAttribute('version', phpversion('xdebug')); |
45 | 46 | } |
46 | 47 |
|
47 | 48 | if ($runtime->hasPCOV()) { |
48 | | - $driverNode->setAttribute('name', 'pcov'); |
49 | | - $driverNode->setAttribute('version', phpversion('pcov')); |
| 49 | + $xmlWriter->writeAttribute('name', 'pcov'); |
| 50 | + $xmlWriter->writeAttribute('version', phpversion('pcov')); |
50 | 51 | } |
| 52 | + $xmlWriter->endElement(); |
51 | 53 |
|
52 | | - $this->contextNode->setAttribute('time', $buildDate->format('D M j G:i:s T Y')); |
53 | | - |
54 | | - $this->contextNode->setAttribute('phpunit', $phpUnitVersion); |
55 | | - $this->contextNode->setAttribute('coverage', $coverageVersion); |
| 54 | + $xmlWriter->endElement(); |
56 | 55 | } |
57 | 56 |
|
58 | | - private function nodeByName(string $name): DOMElement |
59 | | - { |
60 | | - $node = $this->contextNode->appendChild( |
61 | | - $this->contextNode->ownerDocument->createElementNS( |
62 | | - Facade::XML_NAMESPACE, |
63 | | - $name, |
64 | | - ), |
65 | | - ); |
66 | | - |
67 | | - assert($node instanceof DOMElement); |
68 | | - |
69 | | - return $node; |
70 | | - } |
71 | 57 | } |
0 commit comments