Annotation of embedaddon/php/ext/phar/tests/027U.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Phar: phar:// opendir
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: --FILE--
11: <?php
12: $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
13: $pname = 'phar://' . $fname;
14: $file = b"<?php __HALT_COMPILER(); ?>";
15:
16: $files = array();
17: $files['a.php'] = '<?php echo "This is a\n"; require \''.$pname.'/b.php\'; ?>';
18: $files['b.php'] = '<?php echo "This is b\n"; require \''.$pname.'/b/c.php\'; ?>';
19: $files['b/c.php'] = '<?php echo "This is b/c\n"; require \''.$pname.'/b/d.php\'; ?>';
20: $files['b/d.php'] = '<?php echo "This is b/d\n"; require \''.$pname.'/e.php\'; ?>';
21: $files['e.php'] = '<?php echo "This is e\n"; ?>';
22:
23: include 'files/phar_test.inc';
24:
25: function dump($phar, $base)
26: {
27: var_dump(str_replace(dirname(__FILE__), '*', $phar) . $base);
28: $dir = opendir($phar . $base);
29: if ($base == '/')
30: {
31: $base = '';
32: }
33: while (false !== ($entry = readdir($dir))) {
34: $entry = $base . '/' . $entry;
35: var_dump($entry);
36: var_dump(is_dir($phar . $entry));
37: if (is_dir($phar . $entry))
38: {
39: dump($phar, $entry);
40: }
41: }
42: }
43:
44: dump($pname, '/');
45:
46: $a = opendir($pname);
47: // this may stop working in future versions, but is here for code coverage purposes
48: echo "fseek on dir handle\n";
49: var_dump(fseek($a, 0, SEEK_END), ftell($a));
50: var_dump(fseek($a, -1), ftell($a));
51: var_dump(fseek($a, 1), ftell($a));
52: echo "fwrite on dir handle\n";
53: var_dump(fwrite($a, b'hi'));
54: var_dump(fstat($a));
55: closedir($a);
56: echo "opendir edge cases\n";
57: var_dump(opendir("phar://"));
58: var_dump(opendir("phar://foo.phar/hi"));
59: ?>
60: ===DONE===
61: --CLEAN--
62: <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
63: --EXPECTF--
64: unicode(%d) "phar://*/027U.phar.php/"
65: unicode(6) "/a.php"
66: bool(false)
67: unicode(2) "/b"
68: bool(true)
69: unicode(%d) "phar://*/027U.phar.php/b"
70: unicode(8) "/b/c.php"
71: bool(false)
72: unicode(8) "/b/d.php"
73: bool(false)
74: unicode(6) "/b.php"
75: bool(false)
76: unicode(6) "/e.php"
77: bool(false)
78: fseek on dir handle
79: int(0)
80: int(4)
81: int(-1)
82: int(4)
83: int(0)
84: int(1)
85: fwrite on dir handle
86: int(0)
87: bool(false)
88: opendir edge cases
89:
90: Warning: opendir(phar://): failed to open dir: phar error: no directory in "phar://", must have at least phar:/// for root directory (always use full path to a new phar)
91: phar url "phar://" is unknown in %s027U.php on line %d
92: bool(false)
93:
94: Warning: opendir(phar://foo.phar/hi): failed to open dir: phar error: invalid url or non-existent phar "phar://foo.phar/hi"
95: phar url "phar://foo.phar/hi" is unknown in %s027U.php on line %d
96: bool(false)
97: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>