Skip to content

Commit 43754a1

Browse files
committed
Bug in Uncovered Code in XMLWriter
Add test, fix bug.
1 parent 6b505d2 commit 43754a1

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

src/PhpSpreadsheet/Shared/XMLWriter.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public function __construct(int $temporaryStorage = self::STORAGE_MEMORY, ?strin
3939
if (empty($this->tempFileName) || $this->openUri($this->tempFileName) === false) {
4040
// Fallback to memory...
4141
$this->openMemory();
42+
$this->tempFileName = '';
4243
}
4344
}
4445

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PhpOffice\PhpSpreadsheetTests\Shared;
6+
7+
class XMLWriterNoUri extends \PhpOffice\PhpSpreadsheet\Shared\XMLWriter
8+
{
9+
public function openUri(string $uri): bool
10+
{
11+
return false;
12+
}
13+
}

tests/PhpSpreadsheetTests/Shared/XmlWriterTest.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,28 @@ public function testDiskCache(): void
8383
$expected .= '</root>' . $indentnl;
8484
self::assertSame($expected, $objWriter->getData());
8585
}
86+
87+
public function testFallbackToMemory(): void
88+
{
89+
XMLWriter::$debugEnabled = false;
90+
$indent = '';
91+
$indentnl = '';
92+
$objWriter = new XMLWriterNoUri(XMLWriter::STORAGE_DISK);
93+
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
94+
$expected = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . "\n";
95+
$objWriter->startElement('root');
96+
$expected .= '<root>' . $indentnl;
97+
$objWriter->startElement('node');
98+
$expected .= $indent . '<node>';
99+
$objWriter->writeRawData('xyz');
100+
$expected .= 'xyz';
101+
$objWriter->writeRawData(null);
102+
$objWriter->writeRawData(['12', '34', '5']);
103+
$expected .= "12\n34\n5";
104+
$objWriter->endElement(); // node
105+
$expected .= '</node>' . $indentnl;
106+
$objWriter->endElement(); // root
107+
$expected .= '</root>' . $indentnl;
108+
self::assertSame($expected, $objWriter->getData());
109+
}
86110
}

0 commit comments

Comments
 (0)