diff options
Diffstat (limited to 'ext/phar/tests/refcount1.phpt')
| -rw-r--r-- | ext/phar/tests/refcount1.phpt | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/ext/phar/tests/refcount1.phpt b/ext/phar/tests/refcount1.phpt new file mode 100644 index 0000000..ddbb7f7 --- /dev/null +++ b/ext/phar/tests/refcount1.phpt @@ -0,0 +1,62 @@ +--TEST-- +Phar: test that refcounting avoids problems with deleting a file +--SKIPIF-- +<?php if (!extension_loaded("phar")) die("skip"); ?> +<?php if (!extension_loaded("spl")) die("skip SPL not available"); ?> +<?php if (version_compare(PHP_VERSION, "5.3", "<")) die("skip requires 5.3 or later"); ?> +--INI-- +phar.readonly=0 +phar.require_hash=0 +--FILE-- +<?php +$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php'; +$pname = 'phar://' . $fname; +$file = b"<?php __HALT_COMPILER(); ?>"; + +$files = array(); +$files['a.php'] = '<?php echo "This is a\n"; ?>'; +$files['b.php'] = '<?php echo "This is b\n"; ?>'; +$files['b/c.php'] = '<?php echo "This is b/c\n"; ?>'; +include 'files/phar_test.inc'; + +$fp = fopen($pname . '/b/c.php', 'wb'); +fwrite($fp, b"extra"); +fclose($fp); +echo "===CLOSE===\n"; +$p = new Phar($fname); +$b = fopen($pname . '/b/c.php', 'rb'); +$a = $p['b/c.php']; +var_dump($a); +var_dump(fread($b, 20)); +rewind($b); +echo "===UNLINK===\n"; +unlink($pname . '/b/c.php'); +var_dump($a); +var_dump(fread($b, 20)); +include $pname . '/b/c.php'; +?> + +===DONE=== +--CLEAN-- +<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?> +--EXPECTF-- +===CLOSE=== +object(PharFileInfo)#%d (2) { + [%spathName":%sSplFileInfo":private]=> + string(%d) "phar://%srefcount1.phar.php/b/c.php" + [%sfileName":%sSplFileInfo":private]=> + string(%d) "c.php" +} +string(5) "extra" +===UNLINK=== + +Warning: unlink(): phar error: "b/c.php" in phar "%srefcount1.phar.php", has open file pointers, cannot unlink in %srefcount1.php on line %d +object(PharFileInfo)#%d (2) { + [%spathName":%sSplFileInfo":private]=> + string(%d) "phar://%srefcount1.phar.php/b/c.php" + [%sfileName":%sSplFileInfo":private]=> + string(%s) "c.php" +} +string(5) "extra" +extra +===DONE=== |
