Skip to content

Commit 480ab39

Browse files
staabmsebastianbergmann
authored andcommitted
Don't query the line-coverage element over and over
1 parent b9d130a commit 480ab39

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/Report/Xml/File.php

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use function assert;
1313
use DOMDocument;
1414
use DOMElement;
15+
use DOMNode;
1516

1617
/**
1718
* @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
@@ -20,6 +21,7 @@ class File
2021
{
2122
private readonly DOMDocument $dom;
2223
private readonly DOMElement $contextNode;
24+
private ?DOMNode $lineCoverage = null;
2325

2426
public function __construct(DOMElement $context)
2527
{
@@ -47,21 +49,17 @@ public function totals(): Totals
4749

4850
public function lineCoverage(string $line): Coverage
4951
{
50-
$coverage = $this->contextNode->getElementsByTagNameNS(
51-
Facade::XML_NAMESPACE,
52-
'coverage',
53-
)->item(0);
54-
55-
if ($coverage === null) {
56-
$coverage = $this->contextNode->appendChild(
52+
if ($this->lineCoverage === null) {
53+
$this->lineCoverage = $this->contextNode->appendChild(
5754
$this->dom->createElementNS(
5855
Facade::XML_NAMESPACE,
5956
'coverage',
6057
),
6158
);
6259
}
60+
assert($this->lineCoverage instanceof DOMElement);
6361

64-
$lineNode = $coverage->appendChild(
62+
$lineNode = $this->lineCoverage->appendChild(
6563
$this->dom->createElementNS(
6664
Facade::XML_NAMESPACE,
6765
'line',

0 commit comments

Comments
 (0)