stat2.phpt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. --TEST--
  2. Phar: test stat function interceptions and is_file/is_link edge cases (PHP 5.2)
  3. --SKIPIF--
  4. <?php if (!extension_loaded("phar")) die("skip");?>
  5. <?php if (substr(phpversion(), 0, 3) != '5.2') die("skip PHP 5.2 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();
  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: Wrong parameter count for is_file() in %sstat2.php on line %d
  43. Warning: Wrong parameter count for is_link() in %sstat2.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===