Annotation of embedaddon/php/ext/phar/tests/test_alias_unset.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Phar: test for the odd case where we intend to remove an archive from memory
3: --SKIPIF--
4: <?php if (!extension_loaded("phar")) die("skip"); ?>
5: --INI--
6: phar.readonly=0
7: --FILE--
8: <?php
9: $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
10: $pname = 'phar://' . $fname;
11: $fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.phar.php';
12: $pname2 = 'phar://' . $fname2;
13:
14: $phar = new Phar($fname);
15: $phar->setAlias('first');
16: $phar['file1.txt'] = 'hi';
17: unset($phar);
18:
19: $phar2 = new Phar($fname2);
20: $phar2->setAlias('first'); // this works because there are no references to $fname open
21: $phar2['file1.txt'] = 'hi';
22: unset($phar2);
23:
24: $a = fopen($pname . '/file1.txt', 'r'); // this works because there are no references to $fname2 open
25: try {
26: $phar2 = new Phar($fname2); // fails because references open to $fname
27: } catch (Exception $e) {
28: echo $e->getMessage(),"\n";
29: }
30: fclose($a);
31: $phar2 = new Phar($fname2); // succeeds because all refs are closed
32: var_dump($phar2->getAlias());
33:
34: $a = file_get_contents($pname . '/file1.txt'); // this fails because $fname2 ref exists
35: ?>
36: ===DONE===
37: --CLEAN--
38: <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
39: <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.phar.php'); ?>
40: --EXPECTF--
41: Cannot open archive "%stest_alias_unset.2.phar.php", alias is already in use by existing archive
42: string(5) "first"
43:
44: Warning: file_get_contents(phar://%sfile1.txt): failed to open stream: Cannot open archive "%stest_alias_unset.phar.php", alias is already in use by existing archive in %stest_alias_unset.php on line %d
45: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>