@@ -205,6 +205,63 @@ public function failing_to_delete_a_file(): void
205205 $ adapter ->delete ('path.txt ' );
206206 }
207207
208+ /**
209+ * @test
210+ */
211+ public function delete_a_directory_with_special_chars (): void
212+ {
213+ /* $xml = new \XMLWriter();
214+ $xml->openMemory();
215+ $xml->startDocument('1.0', 'UTF-8');
216+
217+ $xml->startElement('span');
218+ $xml->text('a " quote');
219+ $xml->endElement();
220+
221+ $xml->endDocument();
222+
223+ var_dump($xml->outputMemory());
224+ exit;
225+
226+ $document = new \DOMDocument('1.0', 'UTF-8');
227+ $document->appendChild($el = $document->createElement('span'));
228+ $el->appendChild($document->createEntityReference('quot'));
229+ $body = $document->saveXML();
230+
231+ file_put_contents('/tmp/xyz.txt', $body);
232+ var_dump($body);
233+ exit;*/
234+
235+ $ adapter = $ this ->adapter ();
236+
237+ $ specials = [
238+ "' " => '&apos ' ,
239+ '" ' => '" ' ,
240+ '& ' => '& ' ,
241+ '< ' => '< ' ,
242+ '> ' => '> ' ,
243+ //"\r" => '
', //; or 
244+ //"\n" => '
', // 

245+ ];
246+ $ config = new Config ();
247+
248+ $ counter = 1 ;
249+ foreach ($ specials as $ specialChar => $ expectedReplacement ) {
250+ $ key = sprintf ('folder/filename-%d-with-%s-special ' , $ counter , $ specialChar );
251+ $ adapter ->write ($ key , 'some contents ' , $ config );
252+ $ counter ++;
253+ }
254+
255+ self ::assertTrue ($ adapter ->directoryExists ('folder ' ));
256+
257+ $ adapter ->deleteDirectory ('folder ' );
258+
259+ if ($ adapter ->directoryExists ('folder ' )) {
260+ $ contents = iterator_to_array ($ adapter ->listContents ('folder ' , true ));
261+ self ::fail ('The directory should have been deleted. Files left are: ' .print_r ($ contents , true ));
262+ }
263+ }
264+
208265 /**
209266 * @test
210267 */
0 commit comments