Annotation of embedaddon/php/ext/phar/tests/phar_mount.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Phar: Phar::mount
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') . '.phar.tar';
12:
13: $a = new Phar($fname);
14: $a['index.php'] = '<?php
15: Phar::mount("testit", "' . addslashes(__FILE__) . '");
16: try {
17: Phar::mount("testit", "' . addslashes(__FILE__) . '");
18: } catch (Exception $e) {
19: echo $e->getMessage() . "\n";
20: }
21: try {
22: Phar::mount("' . addslashes($pname) . '/testit1", "' . addslashes(__FILE__) . '");
23: } catch (Exception $e) {
24: echo $e->getMessage() . "\n";
25: }
26: ?>';
27: $a->setStub('<?php
28: set_include_path("phar://" . __FILE__);
29: include "index.php";
30: __HALT_COMPILER();');
31: Phar::mount($pname . '/testit1', __FILE__);
32: include $fname;
33: // test copying of a phar with mounted entries
34: $b = $a->convertToExecutable(Phar::TAR);
35: $b->setStub('<?php
36: set_include_path("phar://" . __FILE__);
37: include "index.php";
38: __HALT_COMPILER();');
39: try {
40: include $fname2;
41: } catch (Exception $e) {
42: echo $e->getMessage(),"\n";
43: }
44: try {
45: Phar::mount($pname . '/oops', '/home/oops/../../etc/passwd:');
46: } catch (Exception $e) {
47: echo $e->getMessage(),"\n";
48: }
49: Phar::mount($pname . '/testit2', $pname . '/testit1');
50: echo substr($a['testit2']->getContent(),0, 50),"\n";
51: ?>
52: ===DONE===
53: --CLEAN--
54: <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
55: <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.tar'); ?>
56: --EXPECTF--
57: Mounting of testit to %sphar_mount.php within phar %sphar_mount.phar.php failed
58: Can only mount internal paths within a phar archive, use a relative path instead of "phar://%sphar_mount.phar.php/testit1"
59: Mounting of testit to %sphar_mount.php within phar %sphar_mount.phar.tar failed
60: Mounting of /oops to /home/oops/../../etc/passwd: within phar %sphar_mount.phar.php failed
61: <?php
62: $fname = dirname(__FILE__) . '/' . basename(
63: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>