phar_extract2.phpt 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. --TEST--
  2. Phar: Phar::extractTo() - .phar safety
  3. --EXTENSIONS--
  4. phar
  5. --INI--
  6. phar.readonly=0
  7. --FILE--
  8. <?php
  9. $fname = __DIR__ . '/tempmanifest2.phar.php';
  10. $pname = 'phar://' . $fname;
  11. $phar = new Phar($fname);
  12. $phar->setDefaultStub();
  13. $phar->setAlias('fred');
  14. $phar['file1.txt'] = 'hi';
  15. $phar['file2.txt'] = 'hi2';
  16. $phar['subdir/ectory/file.txt'] = 'hi3';
  17. $phar->mount($pname . '/mount2', __FILE__);
  18. $phar->addEmptyDir('one/level');
  19. $phar->extractTo(__DIR__ . '/extract2', 'mount2');
  20. $phar->extractTo(__DIR__ . '/extract2');
  21. $out = array();
  22. foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__ . '/extract2', 0x00003000), RecursiveIteratorIterator::CHILD_FIRST) as $path => $file) {
  23. $extracted[] = $path;
  24. }
  25. sort($extracted);
  26. foreach ($extracted as $out) {
  27. echo "$out\n";
  28. }
  29. ?>
  30. --CLEAN--
  31. <?php
  32. @unlink(__DIR__ . '/tempmanifest2.phar.php');
  33. $dir = __DIR__ . '/extract2/';
  34. @unlink($dir . 'file1.txt');
  35. @unlink($dir . 'file2.txt');
  36. @unlink($dir . 'subdir/ectory/file.txt');
  37. @rmdir($dir . 'subdir/ectory');
  38. @rmdir($dir . 'subdir');
  39. @rmdir($dir . 'one/level');
  40. @rmdir($dir . 'one');
  41. @rmdir($dir);
  42. $dir = __DIR__ . '/extract1/';
  43. @rmdir($dir);
  44. ?>
  45. --EXPECTF--
  46. %sextract2%cfile1.txt
  47. %sextract2%cfile2.txt
  48. %sextract2%cone
  49. %sextract2%csubdir
  50. %sextract2%csubdir%cectory
  51. %sextract2%csubdir%cectory%cfile.txt