metadata_write_commitU.phpt 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. --TEST--
  2. Phar with meta-data (write) zip-based
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded("phar")) die("skip");
  6. if (version_compare(PHP_VERSION, "6.0", "<")) die("skip Unicode support required");
  7. ?>
  8. --INI--
  9. phar.require_hash=0
  10. phar.readonly=0
  11. --FILE--
  12. <?php
  13. $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.zip.php';
  14. $f2name = dirname(__FILE__) . '/files/metadata.phar.zip';
  15. $pname = 'phar://' . $fname;
  16. $p2name = 'phar://' . $f2name;
  17. $file = "<?php __HALT_COMPILER(); ?>";
  18. $files = array();
  19. $files['a'] = array('cont' => 'a');
  20. $files['b'] = array('cont' => 'b', 'meta' => 'hi there');
  21. $files['c'] = array('cont' => 'c', 'meta' => array('hi', 'there'));
  22. $files['d'] = array('cont' => 'd', 'meta' => array('hi'=>'there','foo'=>'bar'));
  23. foreach($files as $name => $cont) {
  24. var_dump(file_get_contents($p2name.'/'.$name));
  25. }
  26. copy($f2name, $fname);
  27. $phar = new Phar($fname);
  28. $phar->startBuffering();
  29. $phar['a']->setMetadata(42);
  30. $phar['b']->setMetadata(NULL);
  31. $phar['c']->setMetadata(array(25, 'foo'=>'bar'));
  32. $phar['d']->setMetadata(true);
  33. $phar->setMetadata('hi');
  34. foreach($files as $name => $cont) {
  35. var_dump($phar[$name]->getMetadata());
  36. }
  37. $phar->stopBuffering();
  38. unset($phar);
  39. $phar = new Phar($fname);
  40. foreach($files as $name => $cont) {
  41. var_dump(file_get_contents($pname.'/'.$name));
  42. }
  43. foreach($files as $name => $cont) {
  44. var_dump($phar[$name]->getMetadata());
  45. }
  46. var_dump($phar->getMetadata());
  47. ?>
  48. ===DONE===
  49. --CLEAN--
  50. <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.zip.php'); ?>
  51. --EXPECT--
  52. string(1) "a"
  53. string(1) "b"
  54. string(1) "c"
  55. string(1) "d"
  56. int(42)
  57. NULL
  58. array(2) {
  59. [0]=>
  60. int(25)
  61. [u"foo"]=>
  62. unicode(3) "bar"
  63. }
  64. bool(true)
  65. string(1) "a"
  66. string(1) "b"
  67. string(1) "c"
  68. string(1) "d"
  69. int(42)
  70. NULL
  71. array(2) {
  72. [0]=>
  73. int(25)
  74. [u"foo"]=>
  75. unicode(3) "bar"
  76. }
  77. bool(true)
  78. unicode(2) "hi"
  79. ===DONE===