Bug in Uncovered Code in XMLWriter

Add test, fix bug.
This commit is contained in:
oleibman
2025-09-10 08:19:57 -07:00
parent 6b505d2d83
commit 43754a130e
3 changed files with 38 additions and 0 deletions
+1
View File
@@ -39,6 +39,7 @@ class XMLWriter extends \XMLWriter
if (empty($this->tempFileName) || $this->openUri($this->tempFileName) === false) {
// Fallback to memory...
$this->openMemory();
$this->tempFileName = '';
}
}
@@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace PhpOffice\PhpSpreadsheetTests\Shared;
class XMLWriterNoUri extends \PhpOffice\PhpSpreadsheet\Shared\XMLWriter
{
public function openUri(string $uri): bool
{
return false;
}
}
@@ -83,4 +83,28 @@ class XmlWriterTest extends TestCase
$expected .= '</root>' . $indentnl;
self::assertSame($expected, $objWriter->getData());
}
public function testFallbackToMemory(): void
{
XMLWriter::$debugEnabled = false;
$indent = '';
$indentnl = '';
$objWriter = new XMLWriterNoUri(XMLWriter::STORAGE_DISK);
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
$expected = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . "\n";
$objWriter->startElement('root');
$expected .= '<root>' . $indentnl;
$objWriter->startElement('node');
$expected .= $indent . '<node>';
$objWriter->writeRawData('xyz');
$expected .= 'xyz';
$objWriter->writeRawData(null);
$objWriter->writeRawData(['12', '34', '5']);
$expected .= "12\n34\n5";
$objWriter->endElement(); // node
$expected .= '</node>' . $indentnl;
$objWriter->endElement(); // root
$expected .= '</root>' . $indentnl;
self::assertSame($expected, $objWriter->getData());
}
}