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>