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>