]> granicus.if.org Git - php/commitdiff
- And another test
authorMarcus Boerger <helly@php.net>
Fri, 6 Jan 2006 16:27:15 +0000 (16:27 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 6 Jan 2006 16:27:15 +0000 (16:27 +0000)
ext/phar/tests/026.phpt [new file with mode: 0755]
ext/phar/tests/027.phpt [new file with mode: 0755]

diff --git a/ext/phar/tests/026.phpt b/ext/phar/tests/026.phpt
new file mode 100755 (executable)
index 0000000..96e20af
--- /dev/null
@@ -0,0 +1,46 @@
+--TEST--
+Phar: phar:// require from within
+--INI--
+magic_quotes_runtime=0
+--SKIPIF--
+<?php if (!extension_loaded("phar")) print "skip"; ?>
+--FILE--
+<?php
+$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
+$pname = 'phar://' . $fname;
+$file = "<?php __HALT_COMPILER(); ?>";
+$a = '<?php echo "This is a\n"; require "'.$pname.'/b.php"; ?>';
+$b = '<?php echo "This is b\n"; require "'.$pname.'/b/c.php"; ?>';
+$c = '<?php echo "This is b/c\n"; require "'.$pname.'/b/d.php"; ?>';
+$d = '<?php echo "This is b/d\n"; require "'.$pname.'/e.php"; ?>';
+$e = '<?php echo "This is e\n"; ?>';
+
+$manifest = '';
+$manifest .= pack('V', 5) . 'a.php' .   pack('VVVV', strlen($a), time(),                        0, strlen($a) + 8);
+$manifest .= pack('V', 5) . 'b.php' .   pack('VVVV', strlen($b), time(), strlen($a)          +  8, strlen($b) + 8);
+$manifest .= pack('V', 7) . 'b/c.php' . pack('VVVV', strlen($c), time(), strlen($a.$b)       + 16, strlen($c) + 8);
+$manifest .= pack('V', 7) . 'b/d.php' . pack('VVVV', strlen($d), time(), strlen($a.$b.$c)    + 24, strlen($d) + 8);
+$manifest .= pack('V', 5) . 'e.php' .   pack('VVVV', strlen($e), time(), strlen($a.$b.$c.$d) + 32, strlen($e) + 8);
+$file .= pack('VV', strlen($manifest) + 4, 5) .
+        $manifest .
+        pack('VV', crc32($a), strlen($a)) . $a .
+        pack('VV', crc32($b), strlen($b)) . $b .
+        pack('VV', crc32($c), strlen($c)) . $c .
+        pack('VV', crc32($d), strlen($d)) . $d .
+        pack('VV', crc32($e), strlen($e)) . $e;
+
+file_put_contents($fname, $file);
+
+require $pname . '/a.php';
+
+?>
+===DONE===
+--CLEAN--
+<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
+--EXPECT--
+This is a
+This is b
+This is b/c
+This is b/d
+This is e
+===DONE===
diff --git a/ext/phar/tests/027.phpt b/ext/phar/tests/027.phpt
new file mode 100755 (executable)
index 0000000..7ac842c
--- /dev/null
@@ -0,0 +1,74 @@
+--TEST--
+Phar: phar:// opendir
+--INI--
+magic_quotes_runtime=0
+--SKIPIF--
+<?php if (!extension_loaded("phar")) print "skip"; ?>
+--FILE--
+<?php
+$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
+$pname = 'phar://' . $fname;
+$file = "<?php __HALT_COMPILER(); ?>";
+$a = '<?php echo "This is a\n"; require "'.$pname.'/b.php"; ?>';
+$b = '<?php echo "This is b\n"; require "'.$pname.'/b/c.php"; ?>';
+$c = '<?php echo "This is b/c\n"; require "'.$pname.'/b/d.php"; ?>';
+$d = '<?php echo "This is b/d\n"; require "'.$pname.'/e.php"; ?>';
+$e = '<?php echo "This is e\n"; ?>';
+
+$manifest = '';
+$manifest .= pack('V', 5) . 'a.php' .   pack('VVVV', strlen($a), time(),                        0, strlen($a) + 8);
+$manifest .= pack('V', 5) . 'b.php' .   pack('VVVV', strlen($b), time(), strlen($a)          +  8, strlen($b) + 8);
+$manifest .= pack('V', 7) . 'b/c.php' . pack('VVVV', strlen($c), time(), strlen($a.$b)       + 16, strlen($c) + 8);
+$manifest .= pack('V', 7) . 'b/d.php' . pack('VVVV', strlen($d), time(), strlen($a.$b.$c)    + 24, strlen($d) + 8);
+$manifest .= pack('V', 5) . 'e.php' .   pack('VVVV', strlen($e), time(), strlen($a.$b.$c.$d) + 32, strlen($e) + 8);
+$file .= pack('VV', strlen($manifest) + 4, 5) .
+        $manifest .
+        pack('VV', crc32($a), strlen($a)) . $a .
+        pack('VV', crc32($b), strlen($b)) . $b .
+        pack('VV', crc32($c), strlen($c)) . $c .
+        pack('VV', crc32($d), strlen($d)) . $d .
+        pack('VV', crc32($e), strlen($e)) . $e;
+
+file_put_contents($fname, $file);
+
+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($pname, '/');
+
+?>
+===DONE===
+--CLEAN--
+<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
+--EXPECTF--
+string(52) "phar://%s027.phar.php/"
+string(6) "/a.php"
+bool(false)
+string(2) "/b"
+bool(true)
+string(53) "phar://%s027.phar.php/b"
+string(8) "/b/c.php"
+bool(false)
+string(8) "/b/d.php"
+bool(false)
+string(6) "/b.php"
+bool(false)
+string(6) "/e.php"
+bool(false)
+===DONE===