summaryrefslogtreecommitdiff
path: root/ext/phar/tests/019bU.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/phar/tests/019bU.phpt')
-rw-r--r--ext/phar/tests/019bU.phpt70
1 files changed, 70 insertions, 0 deletions
diff --git a/ext/phar/tests/019bU.phpt b/ext/phar/tests/019bU.phpt
new file mode 100644
index 0000000000..c0864aa2ce
--- /dev/null
+++ b/ext/phar/tests/019bU.phpt
@@ -0,0 +1,70 @@
+--TEST--
+Phar: opendir test, recurse into
+--SKIPIF--
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (version_compare(PHP_VERSION, "6.0", "<")) die("skip Unicode support required");
+?>
+--INI--
+phar.require_hash=0
+--FILE--
+<?php
+
+$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
+$pname = 'phar://' . $fname;
+$file = b"<?php
+Phar::mapPhar('hio');
+__HALT_COMPILER(); ?>";
+
+$files = array();
+$files['a'] = 'a';
+$files['b/a'] = 'b';
+$files['b/c/d'] = 'c';
+$files['bad/c'] = 'd';
+
+include 'files/phar_test.inc';
+include $fname;
+
+function dump($phar, $base)
+{
+ var_dump($phar . $base);
+ $dir = opendir($phar . $base);
+ if ($base == '/')
+ {
+ $base = '';
+ }
+ while (false !== ($entry = readdir($dir))) {
+ $entry = $base . '/' . $entry;
+ var_dump($entry);
+ var_dump(is_dir($phar . $entry));
+ if (is_dir($phar . $entry))
+ {
+ dump($phar, $entry);
+ }
+ }
+}
+
+dump('phar://hio', '/');
+
+?>
+--CLEAN--
+<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
+--EXPECT--
+unicode(11) "phar://hio/"
+unicode(2) "/a"
+bool(false)
+unicode(2) "/b"
+bool(true)
+unicode(12) "phar://hio/b"
+unicode(4) "/b/a"
+bool(false)
+unicode(4) "/b/c"
+bool(true)
+unicode(14) "phar://hio/b/c"
+unicode(6) "/b/c/d"
+bool(false)
+unicode(4) "/bad"
+bool(true)
+unicode(14) "phar://hio/bad"
+unicode(6) "/bad/c"
+bool(false)