Annotation of embedaddon/php/ext/phar/tests/phar_extract.phpt, revision 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>