Skip to content

Commit f80c609

Browse files
committed
fix
1 parent 5a0ceb0 commit f80c609

File tree

4 files changed

+33
-49
lines changed

4 files changed

+33
-49
lines changed

src/Report/Xml/Facade.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,13 @@ private function processFile(FileNode $file, Directory $context): void
183183

184184
$this->xmlWriter->endElement();
185185

186+
$this->xmlWriter->startElement('source');
186187
$fileReport->source()->setSourceCode(
187188
file_get_contents($file->pathAsString()),
188189
);
189-
$fileReport->finalize();
190+
$this->xmlWriter->endElement();
190191

192+
$fileReport->finalize();
191193
$this->saveDocument($fileReport->asDom(), $file->id());
192194
}
193195

@@ -218,6 +220,8 @@ private function processUnit(ProcessedClassType|ProcessedTraitType $unit, Report
218220
}
219221

220222
foreach ($unit->methods as $method) {
223+
$this->xmlWriter->startElement('method');
224+
221225
$unitObject->addMethod(
222226
$method->methodName,
223227
$method->signature,
@@ -228,6 +232,8 @@ private function processUnit(ProcessedClassType|ProcessedTraitType $unit, Report
228232
(string) $method->coverage,
229233
$method->crap,
230234
);
235+
236+
$this->xmlWriter->endElement();
231237
}
232238

233239
$this->xmlWriter->endElement();

src/Report/Xml/Method.php

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,17 @@
1010
namespace SebastianBergmann\CodeCoverage\Report\Xml;
1111

1212
use DOMElement;
13+
use XMLWriter;
1314

1415
/**
1516
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
1617
*/
1718
final readonly class Method
1819
{
19-
private DOMElement $contextNode;
20+
private XMLWriter $xmlWriter;
2021

2122
public function __construct(
22-
DOMElement $context,
23+
XMLWriter $xmlWriter,
2324
string $name,
2425
string $signature,
2526
string $start,
@@ -29,21 +30,21 @@ public function __construct(
2930
string $coverage,
3031
string $crap
3132
) {
32-
$this->contextNode = $context;
33+
$this->xmlWriter = $xmlWriter;
3334

34-
$this->contextNode->setAttribute('name', $name);
35-
$this->contextNode->setAttribute('signature', $signature);
35+
$this->xmlWriter->writeAttribute('name', $name);
36+
$this->xmlWriter->writeAttribute('signature', $signature);
3637

37-
$this->contextNode->setAttribute('start', $start);
38+
$this->xmlWriter->writeAttribute('start', $start);
3839

3940
if ($end !== null) {
40-
$this->contextNode->setAttribute('end', $end);
41+
$this->xmlWriter->writeAttribute('end', $end);
4142
}
4243

43-
$this->contextNode->setAttribute('crap', $crap);
44+
$this->xmlWriter->writeAttribute('crap', $crap);
4445

45-
$this->contextNode->setAttribute('executable', $executable);
46-
$this->contextNode->setAttribute('executed', $executed);
47-
$this->contextNode->setAttribute('coverage', $coverage);
46+
$this->xmlWriter->writeAttribute('executable', $executable);
47+
$this->xmlWriter->writeAttribute('executed', $executed);
48+
$this->xmlWriter->writeAttribute('coverage', $coverage);
4849
}
4950
}

src/Report/Xml/Report.php

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,6 @@ public function traitObject(
107107

108108
public function source(): Source
109109
{
110-
$source = $this->contextNode()->appendChild(
111-
$this->dom->createElementNS(
112-
Facade::XML_NAMESPACE,
113-
'source',
114-
),
115-
);
116-
117-
assert($source instanceof DOMElement);
118-
119-
return new Source($source);
110+
return new Source($this->xmlWriter);
120111
}
121112
}

src/Report/Xml/Unit.php

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
namespace SebastianBergmann\CodeCoverage\Report\Xml;
1111

12+
use XMLWriter;
1213
use function assert;
1314
use DOMElement;
1415

@@ -17,34 +18,28 @@
1718
*/
1819
final readonly class Unit
1920
{
20-
private DOMElement $contextNode;
21+
private XMLWriter $xmlWriter;
2122

2223
public function __construct(
23-
DOMElement $context,
24+
XMLWriter $xmlWriter,
2425
string $name,
2526
string $namespace,
2627
int $start,
2728
int $executable,
2829
int $executed,
2930
float $crap
3031
) {
31-
$this->contextNode = $context;
32+
$this->xmlWriter = $xmlWriter;
3233

33-
$this->contextNode->setAttribute('name', $name);
34-
$this->contextNode->setAttribute('start', (string) $start);
35-
$this->contextNode->setAttribute('executable', (string) $executable);
36-
$this->contextNode->setAttribute('executed', (string) $executed);
37-
$this->contextNode->setAttribute('crap', (string) $crap);
34+
$this->xmlWriter->writeAttribute('name', $name);
35+
$this->xmlWriter->writeAttribute('start', (string) $start);
36+
$this->xmlWriter->writeAttribute('executable', (string) $executable);
37+
$this->xmlWriter->writeAttribute('executed', (string) $executed);
38+
$this->xmlWriter->writeAttribute('crap', (string) $crap);
3839

39-
$node = $this->contextNode->appendChild(
40-
$this->contextNode->ownerDocument->createElementNS(
41-
Facade::XML_NAMESPACE,
42-
'namespace',
43-
),
44-
);
45-
assert($node instanceof DOMElement);
46-
47-
$node->setAttribute('name', $namespace);
40+
$this->xmlWriter->startElement('namespace');
41+
$this->xmlWriter->writeAttribute('name', $namespace);
42+
$this->xmlWriter->endElement();
4843
}
4944

5045
public function addMethod(
@@ -57,17 +52,8 @@ public function addMethod(
5752
string $coverage,
5853
string $crap
5954
): void {
60-
$node = $this->contextNode->appendChild(
61-
$this->contextNode->ownerDocument->createElementNS(
62-
Facade::XML_NAMESPACE,
63-
'method',
64-
),
65-
);
66-
67-
assert($node instanceof DOMElement);
68-
6955
new Method(
70-
$node,
56+
$this->xmlWriter,
7157
$name,
7258
$signature,
7359
$start,

0 commit comments

Comments
 (0)