phar_extract2.phpt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. --TEST--
  2. Phar: Phar::extractTo() - .phar safety
  3. --SKIPIF--
  4. <?php if (!extension_loaded("phar")) die("skip"); ?>
  5. --INI--
  6. phar.readonly=0
  7. --FILE--
  8. <?php
  9. $fname = dirname(__FILE__) . '/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(dirname(__FILE__) . '/extract2', 'mount2');
  20. $phar->extractTo(dirname(__FILE__) . '/extract2');
  21. $out = array();
  22. foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(dirname(__FILE__) . '/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. ===DONE===
  31. --CLEAN--
  32. <?php
  33. @unlink(dirname(__FILE__) . '/tempmanifest2.phar.php');
  34. $dir = dirname(__FILE__) . '/extract2/';
  35. @unlink($dir . 'file1.txt');
  36. @unlink($dir . 'file2.txt');
  37. @unlink($dir . 'subdir/ectory/file.txt');
  38. @rmdir($dir . 'subdir/ectory');
  39. @rmdir($dir . 'subdir');
  40. @rmdir($dir . 'one/level');
  41. @rmdir($dir . 'one');
  42. @rmdir($dir);
  43. $dir = dirname(__FILE__) . '/extract1/';
  44. @rmdir($dir);
  45. ?>
  46. --EXPECTF--
  47. %sextract2%cfile1.txt
  48. %sextract2%cfile2.txt
  49. %sextract2%cone
  50. %sextract2%csubdir
  51. %sextract2%csubdir%cectory
  52. %sextract2%csubdir%cectory%cfile.txt
  53. ===DONE===