10000 [VarDumper] Fix dumping `ext-dom` virtual properties · symfony/symfony@273f9cb · GitHub
[go: up one dir, main page]

Skip to content

Commit 273f9cb

Browse files
[VarDumper] Fix dumping ext-dom virtual properties
1 parent 6584ff5 commit 273f9cb

File tree

2 files changed

+231
-33
lines changed

2 files changed

+231
-33
lines changed

src/Symfony/Component/VarDumper/Tests/Caster/DOMCasterTest.php

Lines changed: 178 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ public function testCastModernImplementation()
4949
);
5050
}
5151

52-
public function testCastNode()
52+
/**
53+
* @requires PHP < 8.4
54+
*/
55+
public function testCastNodePriorToPhp84()
5356
{
5457
$doc = new \DOMDocument();
5558
$doc->loadXML('<foo><bar/></foo>');
@@ -67,6 +70,27 @@ public function testCastNode()
6770
);
6871
}
6972

73+
/**
74+
* @requires PHP 8.4
75+
*/
76+
public function testCastNode()
77+
{
78+
$doc = new \DOMDocument();
79+
$doc->loadXML('<foo><bar/></foo>');
80+
$node = $doc->documentElement->firstChild;
81+
82+
$this->assertDumpMatchesFormat(<<<'EODUMP'
83+
DOMElement {%A
84+
+ownerDocument: ~ ?DOMDocument
85+
+namespaceURI: ~ ?string
86+
+prefix: ~ string
87+
+localName: ~ ?string
88+
%A}
89+
EODUMP,
90+
$node
91+
);
92+
}
93+
7094
/**
7195
* @requires PHP 8.4
7296
*/
@@ -77,9 +101,9 @@ public function testCastModernNode()
77101

78102
$this->assertDumpMatchesFormat(<<<'EODUMP'
79103
Dom\Element {%A
80-
+baseURI: ? string
81-
+isConnected: ? bool
82-
+ownerDocument: ? ?Dom\Document
104+
+baseURI: ~ string
105+
+isConnected: ~ bool
106+
+ownerDocument: ~ ?Dom\Document
83107
%A}
84108
EODUMP,
85109
$node
@@ -142,7 +166,10 @@ public function testCastHTMLDocument()
142166
);
143167
}
144168

145-
public function testCastText()
169+
/**
170+
* @requires PHP < 8.4
171+
*/
172+
public function testCastTextPriorToPhp84()
146173
{
147174
$doc = new \DOMText('foo');
148175

@@ -155,6 +182,22 @@ public function testCastText()
155182
);
156183
}
157184

185+
/**
186+
* @requires PHP 8.4
187+
*/
188+
public function testCastText()
189+
{
190+
$doc = new \DOMText('foo');
191+
192+
$this->assertDumpMatchesFormat(<<<'EODUMP'
193+
DOMText {%A
194+
+wholeText: ~ string
195+
}
196+
EODUMP,
197+
$doc
198+
);
199+
}
200+
158201
/**
159202
* @requires PHP 8.4
160203
*/
@@ -163,7 +206,7 @@ public function testCastModernText()
163206
$text = \Dom\HTMLDocument::createEmpty()->createTextNode('foo');
164207
$this->assertDumpMatchesFormat(<<<'EODUMP'
165208
Dom\Text {%A
166-
+wholeText: ? string
209+
+wholeText: ~ string
167210
}
168211
EODUMP,
169212
$text
@@ -199,11 +242,31 @@ public function testCastAttr()
199242

200243
$this->assertDumpMatchesFormat(<<<'EODUMP'
201244
DOMAttr {%A
202-
+name: ? string
203-
+specified: ? bool
204-
+value: ? string
205-
+ownerElement: ? ?DOMElement
206-
+schemaTypeInfo: ? mixed
245+
+name: ~ string
246+
+specified: ~ bool
247+
+value: ~ string
248+
+ownerElement: ~ ?DOMElement
249+
+schemaTypeInfo: ~ mixed
250+
}
251+
EODUMP,
252+
$attr
253+
);
254+
}
255+
256+
/**
257+
* @requires PHP 8.4
258+
*/
259+
public function testCastAttrPrior()
260+
{
261+
$attr = new \DOMAttr('attr', 'value');
262+
263+
$this->assertDumpMatchesFormat(<<<'EODUMP'
264+
DOMAttr {%A
265+
+name: ~ string
266+
+specified: ~ bool
267+
+value: ~ string
268+
+ownerElement: ~ ?DOMElement
269+
+schemaTypeInfo: ~ mixed
207270
}
208271
EODUMP,
209272
$attr
@@ -219,17 +282,20 @@ public function testCastModernAttr()
219282

220283
$this->assertDumpMatchesFormat(<<<'EODUMP'
221284
Dom\Attr {%A
222-
+name: ? string
223-
+value: ? string
224-
+ownerElement: ? ?Dom\Element
225-
+specified: ? bool
285+
+name: ~ string
286+
+value: ~ string
287+
+ownerElement: ~ ?Dom\Element
288+
+specified: ~ bool
226289
}
227290
EODUMP,
228291
$attr
229292
);
230293
}
231294

232-
public function testCastElement()
295+
/**
296+
* @requires PHP < 8.4
297+
*/
298+
public function testCastElementPriorToPhp84()
233299
{
234300
$attr = new \DOMElement('foo');
235301

@@ -242,6 +308,22 @@ public function testCastElement()
242308
);
243309
}
244310

311+
/**
312+
* @requires PHP 8.4
313+
*/
314+
public function testCastElement()
315+
{
316+
$attr = new \DOMElement('foo');
317+
318+
$this->assertDumpMatchesFormat(<<<'EODUMP'
319+
DOMElement {%A
320+
+tagName: ~ string
321+
%A}
322+
EODUMP,
323+
$attr
324+
);
325+
}
326+
245327
/**
246328
* @requires PHP 8.4
247329
*/
@@ -251,14 +333,17 @@ public function testCastModernElement()
251333

252334
$this->assertDumpMatchesFormat(<<<'EODUMP'
253335
Dom\HTMLElement {%A
254-
+tagName: ? string
336+
+tagName: ~ string
255337
%A}
256338
EODUMP,
257339
$attr
258340
);
259341
}
260342

261-
public function testCastDocumentType()
343+
/**
344+
* @requires PHP < 8.4
345+
*/
346+
public function testCastDocumentTypePriorToPhp84()
262347
{
263348
$implementation = new \DOMImplementation();
264349
$type = $implementation->createDocumentType('html', 'publicId', 'systemId');
@@ -277,6 +362,28 @@ public function testCastDocumentType()
277362
);
278363
}
279364

365+
/**
366+
* @requires PHP 8.4
367+
*/
368+
public function testCastDocumentType()
369+
{
370+
$implementation = new \DOMImplementation();
371+
$type = $implementation->createDocumentType('html', 'publicId', 'systemId');
372+
373+
$this->assertDumpMatchesFormat(<<<'EODUMP'
374+
DOMDocumentType {%A
375+
+name: ~ string
376+
+entities: ~ DOMNamedNodeMap
377+
+notations: ~ DOMNamedNodeMap
378+
+publicId: ~ string
379+
+systemId: ~ string
380+
+internalSubset: ~ ?string
381+
}
382+
EODUMP,
383+
$type
384+
);
385+
}
386+
280387
/**
281388
* @requires PHP 8.4
282389
*/
@@ -287,19 +394,22 @@ public function testCastModernDocumentType()
287394

288395
$this->assertDumpMatchesFormat(<<<'EODUMP'
289396
Dom\DocumentType {%A
290-
+name: ? string
291-
+entities: ? Dom\DtdNamedNodeMap
292-
+notations: ? Dom\DtdNamedNodeMap
293-
+publicId: ? string
294-
+systemId: ? string
295-
+internalSubset: ? ?string
397+
+name: ~ string
398+
+entities: ~ Dom\DtdNamedNodeMap
399+
+notations: ~ Dom\DtdNamedNodeMap
400+
+publicId: ~ string
401+
+systemId: ~ string
402+
+internalSubset: ~ ?string
296403
}
297404
EODUMP,
298405
$type
299406
);
300407
}
301408

302-
public function testCastProcessingInstruction()
409+
/**
410+
* @requires PHP < 8.4
411+
*/
412+
public function testCastProcessingInstructionPriorToPhp84()
303413
{
304414
$entity = new \DOMProcessingInstruction('target', 'data');
305415

@@ -313,6 +423,23 @@ public function testCastProcessingInstruction()
313423
);
314424
}
315425

426+
/**
427+
* @requires PHP 8.4
428+
*/
429+
public function testCastProcessingInstruction()
430+
{
431+
$entity = new \DOMProcessingInstruction('target', 'data');
432+
433+
$this->assertDumpMatchesFormat(<<<'EODUMP'
434+
DOMProcessingInstruction {%A
435+
+target: ~ string
436+
+data: ~ string
437+
}
438+
EODUMP,
439+
$entity
440+
);
441+
}
442+
316443
/**
317444
* @requires PHP 8.4
318445
*/
@@ -322,16 +449,19 @@ public function testCastModernProcessingInstruction()
322449

323450
$this->assertDumpMatchesFormat(<<<'EODUMP'
324451
Dom\ProcessingInstruction {%A
325-
+data: ? string
326-
+length: ? int
327-
+target: ? string
452+
+data: ~ string
453+
+length: ~ int
454+
+target: ~ string
328455
}
329456
EODUMP,
330457
$entity
331458
);
332459
}
333460

334-
public function testCastXPath()
461+
/**
462+
* @requires PHP < 8.4
463+
*/
464+
public function testCastXPathPriorToPhp84()
335465
{
336466
$xpath = new \DOMXPath(new \DOMDocument());
337467

@@ -345,6 +475,23 @@ public function testCastXPath()
345475
);
346476
}
347477

478+
/**
479+
* @requires PHP 8.4
480+
*/
481+
public function testCastXPath()
482+
{
483+
$xpath = new \DOMXPath(new \DOMDocument());
484+
485+
$this->assertDumpEquals(<<<'EODUMP'
486+
DOMXPath {
487+
+document: ~ DOMDocument
488+
+registerNodeNamespaces: ~ bool
489+
}
490+
EODUMP,
491+
$xpath
492+
);
493+
}
494+
348495
/**
349496
* @requires PHP 8.4
350497
*/
@@ -354,8 +501,8 @@ public function testCastModernXPath()
354501

355502
$this->assertDumpEquals(<<<'EODUMP'
356503
Dom\XPath {
357-
+document: ? Dom\Document
358-
+registerNodeNamespaces: ? bool
504+
+document: ~ Dom\Document
505+
+registerNodeNamespaces: ~ bool
359506
}
360507
EODUMP,
361508
$entity

0 commit comments

Comments
 (0)
0