Annotation of embedaddon/php/ext/phar/tests/phar_extract.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Phar: Phar::extractTo()
3: --SKIPIF--
4: <?php if (!extension_loaded("phar")) die("skip"); ?>
5: --INI--
6: phar.readonly=0
7: --FILE--
8: <?php
9:
10: $fname = dirname(__FILE__) . '/tempmanifest1.phar.php';
11: $pname = 'phar://' . $fname;
12:
13: $a = new Phar($fname);
14: $a['file1.txt'] = 'hi';
15: $a['file2.txt'] = 'hi2';
16: $a['subdir/ectory/file.txt'] = 'hi3';
17: $a->mount($pname . '/mount', __FILE__);
18: $a->addEmptyDir('one/level');
19:
20: $a->extractTo(dirname(__FILE__) . '/extract', 'mount');
21: $a->extractTo(dirname(__FILE__) . '/extract');
22:
23: $out = array();
24:
25: foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(dirname(__FILE__) . '/extract', 0x00003000), RecursiveIteratorIterator::CHILD_FIRST) as $p => $b) {
26: $out[] = $p;
27: }
28:
29: sort($out);
30:
31: foreach ($out as $b) {
32: echo "$b\n";
33: }
34:
35: $a->extractTo(dirname(__FILE__) . '/extract1', 'file1.txt');
36: var_dump(file_get_contents(dirname(__FILE__) . '/extract1/file1.txt'));
37:
38: $a->extractTo(dirname(__FILE__) . '/extract1', 'subdir/ectory/file.txt');
39: var_dump(file_get_contents(dirname(__FILE__) . '/extract1/subdir/ectory/file.txt'));
40:
41: $a->extractTo(dirname(__FILE__) . '/extract2', array('file2.txt', 'one/level'));
42: var_dump(file_get_contents(dirname(__FILE__) . '/extract2/file2.txt'));
43: var_dump(is_dir(dirname(__FILE__) . '/extract2/one/level'));
44:
45: try {
46: $a->extractTo(dirname(__FILE__) . '/whatever', 134);
47: } catch (Exception $e) {
48: echo $e->getMessage(), "\n";
49: }
50:
51: $a->extractTo(array());
52:
53: try {
54: $a->extractTo('');
55: } catch (Exception $e) {
56: echo $e->getMessage(), "\n";
57: }
58:
59: file_put_contents(dirname(__FILE__) . '/oops', 'I is file');
60:
61: try {
62: $a->extractTo(dirname(__FILE__) . '/oops', 'file1.txt');
63: } catch (Exception $e) {
64: echo $e->getMessage(), "\n";
65: }
66:
67: try {
68: $a->extractTo(dirname(__FILE__) . '/oops1', array(array(), 'file1.txt'));
69: } catch (Exception $e) {
70: echo $e->getMessage(), "\n";
71: }
72:
73: try {
74: $a->extractTo(dirname(__FILE__) . '/extract', 'file1.txt');
75: } catch (Exception $e) {
76: echo $e->getMessage(), "\n";
77: }
78:
79: file_put_contents(dirname(__FILE__) . '/extract/file1.txt', 'first');
80: var_dump(file_get_contents(dirname(__FILE__) . '/extract/file1.txt'));
81:
82: $a->extractTo(dirname(__FILE__) . '/extract', 'file1.txt', true);
83: var_dump(file_get_contents(dirname(__FILE__) . '/extract/file1.txt'));
84:
85: try {
86: $a->extractTo(str_repeat('a', 20000), 'file1.txt');
87: } catch (Exception $e) {
88: echo $e->getMessage(), "\n";
89: }
90:
91: $a[str_repeat('a', 20000)] = 'long';
92:
93: try {
94: $a->extractTo(dirname(__FILE__) . '/extract', str_repeat('a', 20000));
95: } catch (Exception $e) {
96: echo $e->getMessage(), "\n";
97: }
98:
99: ?>
100: ===DONE===
101: --CLEAN--
102: <?php
103: @rmdir(dirname(__FILE__) . '/whatever');
104: @unlink(dirname(__FILE__) . '/oops');
105: @rmdir(dirname(__FILE__) . '/oops1');
106: @unlink(dirname(__FILE__) . '/tempmanifest1.phar.php');
107: $e = dirname(__FILE__) . '/extract/';
108: @unlink($e . 'file1.txt');
109: @unlink($e . 'file2.txt');
110: @unlink($e . 'subdir/ectory/file.txt');
111: @rmdir($e . 'subdir/ectory');
112: @rmdir($e . 'subdir');
113: @rmdir($e . 'one/level');
114: @rmdir($e . 'one');
115: @rmdir($e);
116: $e = dirname(__FILE__) . '/extract1/';
117: @unlink($e . 'file1.txt');
118: @unlink($e . 'subdir/ectory/file.txt');
119: @rmdir($e . 'subdir/ectory');
120: @rmdir($e . 'subdir');
121: @rmdir($e);
122: $e = dirname(__FILE__) . '/extract2/';
123: @unlink($e . 'file2.txt');
124: @rmdir($e . 'one/level');
125: @rmdir($e . 'one');
126: @rmdir($e);
127: ?>
128: --EXPECTF--
129: %sextract%cfile1.txt
130: %sextract%cfile2.txt
131: %sextract%cone
132: %sextract%csubdir
133: %sextract%csubdir%cectory
134: %sextract%csubdir%cectory%cfile.txt
135: string(2) "hi"
136: string(3) "hi3"
137: string(3) "hi2"
138: bool(false)
139: Invalid argument, expected a filename (string) or array of filenames
140:
141: Warning: Phar::extractTo() expects parameter 1 to be %string, array given in %sphar_extract.php on line %d
142: Invalid argument, extraction path must be non-zero length
143: Unable to use path "%soops" for extraction, it is a file, must be a directory
144: Invalid argument, array of filenames to extract contains non-string value
145: Extraction from phar "%stempmanifest1.phar.php" failed: Cannot extract "file1.txt" to "%sextract/file1.txt", path already exists
146: string(5) "first"
147: string(2) "hi"
148: Cannot extract to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...", destination directory is too long for filesystem
149: Extraction from phar "%stempmanifest1.phar.php" failed: Cannot extract "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..." to "%s...", extracted filename is too long for filesystem
150: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>