stat2_5.3.phpt 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. --TEST--
  2. Phar: test stat function interceptions and is_file/is_link edge cases (PHP 5.3+)
  3. --SKIPIF--
  4. <?php if (!extension_loaded("phar")) die("skip");?>
  5. <?php if (substr(phpversion(), 0, 3) == '5.2') die("skip PHP 5.3+ required for this test");?>
  6. --INI--
  7. phar.readonly=0
  8. phar.require_hash=0
  9. --FILE--
  10. <?php
  11. Phar::interceptFileFuncs();
  12. is_file();
  13. is_link();
  14. var_dump(is_file(__FILE__));
  15. $fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar';
  16. $fname3 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.tar';
  17. copy(dirname(__FILE__) . '/tar/files/links.tar', $fname2);
  18. $a = new PharData($fname2);
  19. $b = $a->convertToExecutable(Phar::TAR, Phar::NONE, '.3.phar.tar');
  20. unset($a);
  21. Phar::unlinkArchive($fname2);
  22. $b['foo/stat.php'] = '<?php
  23. echo "is_link\n";
  24. var_dump(is_link("./stat.php"),is_file("./stat.php"), is_link("./oops"), is_file("./oops"));
  25. var_dump(is_link("testit/link"), filetype("testit/link"), filetype("testit"), is_file("testit/link"));
  26. echo "not found\n";
  27. var_dump(is_link("notfound"));
  28. echo "dir\n";
  29. var_dump(is_dir("./bar"), is_file("foo/bar/blah"));
  30. ?>';
  31. $b->addEmptyDir('foo/bar/blah');
  32. $b->setStub('<?php
  33. include "phar://" . __FILE__ . "/foo/stat.php";
  34. __HALT_COMPILER();');
  35. include $fname3;
  36. ?>
  37. ===DONE===
  38. --CLEAN--
  39. <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.tar'); ?>
  40. <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.tar'); ?>
  41. --EXPECTF--
  42. Warning: is_file() expects exactly 1 parameter, 0 given in %sstat2_5.3.php on line %d
  43. Warning: is_link() expects exactly 1 parameter, 0 given in %sstat2_5.3.php on line %d
  44. bool(true)
  45. is_link
  46. bool(false)
  47. bool(true)
  48. bool(false)
  49. bool(false)
  50. bool(true)
  51. string(4) "link"
  52. string(3) "dir"
  53. bool(true)
  54. not found
  55. bool(false)
  56. dir
  57. bool(true)
  58. bool(false)
  59. ===DONE===