Annotation of embedaddon/php/ext/phar/tests/fopen_edgecases.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Phar: fopen/stat/fseek/unlink/rename edge cases
                      3: --SKIPIF--
                      4: <?php if (!extension_loaded("phar")) die("skip"); ?>
                      5: --INI--
                      6: phar.readonly=0
                      7: phar.require_hash=0
                      8: --FILE--
                      9: <?php
                     10: $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
                     11: $fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.phar.php';
                     12: $fname3 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.3.phar.php';
                     13: $pname = 'phar://' . $fname;
                     14: $pname2 = 'phar://' . $fname2;
                     15: $pname3 = 'phar://' . $fname3;
                     16: 
                     17: // create in cwd
                     18: chdir(dirname(__FILE__));
                     19: file_put_contents('phar://fopen_edgetest.phar/hi', 'hi');
                     20: // append
                     21: $a = fopen($pname . '/b/c.php', 'a');
                     22: // invalid pharname
                     23: $a = fopen($pname . '.phar.gz', 'r');
                     24: // test phar_open_url() with quiet stat for code coverage
                     25: var_dump(file_exists($pname . '.phar.gz/hi'));
                     26: // test open for write with new phar
                     27: $a = fopen($pname . '/hi', 'w');
                     28: fclose($a);
                     29: // test open for write with corrupted phar
                     30: file_put_contents($fname2, '<?php oh crap __HALT_COMPILER();');
                     31: $a = fopen($pname2 . '/hi', 'w');
                     32: $a = fopen('phar://', 'r');
                     33: $a = fopen('phar://foo.phar', 'r');
                     34: 
                     35: file_put_contents($pname . '/hi', 'hi');
                     36: $a = fopen($pname . '/hi', 'r');
                     37: var_dump(fseek($a, 1), ftell($a));
                     38: var_dump(fseek($a, 1, SEEK_CUR), ftell($a));
                     39: fclose($a);
                     40: 
                     41: var_dump(stat('phar://'));
                     42: var_dump(stat('phar://foo.phar'));
                     43: var_dump(is_dir($pname));
                     44: 
                     45: // this tests coverage of the case where the phar exists and has no files
                     46: $phar = new Phar($fname3);
                     47: var_dump(file_exists($pname3 . '/test'));
                     48: 
                     49: unlink($pname2 . '/hi');
                     50: unlink('phar://');
                     51: unlink('phar://foo.phar');
                     52: unlink($pname . '/oops');
                     53: 
                     54: rename('phar://', 'phar://');
                     55: rename($pname . '/hi', 'phar://');
                     56: rename('phar://foo.phar/hi', 'phar://');
                     57: rename($pname . '/hi', 'phar://foo.phar/hi');
                     58: 
                     59: ini_set('phar.readonly', 1);
                     60: rename($pname . '/hi', $pname . '/there');
                     61: ini_set('phar.readonly', 0);
                     62: Phar::unlinkArchive($fname);
                     63: file_put_contents($pname . '/test.php', '<?php
                     64: $a = fopen("./notfound.php", "r");
                     65: ?>');
                     66: include $pname . '/test.php';
                     67: ?>
                     68: 
                     69: ===DONE===
                     70: --CLEAN--
                     71: <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
                     72: <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.phar.php'); ?>
                     73: <?php unlink(dirname(__FILE__) . '/fopen_edgetest.phar');
                     74: --EXPECTF--
                     75: Warning: fopen(phar://%sfopen_edgecases.phar.php/b/c.php): failed to open stream: phar error: open mode append not supported in %sfopen_edgecases.php on line %d
                     76: 
                     77: Warning: fopen(phar://%sfopen_edgecases.phar.php.phar.gz): failed to open stream: phar error: invalid url or non-existent phar "phar://%sfopen_edgecases.phar.php.phar.gz" in %sfopen_edgecases.php on line %d
                     78: bool(false)
                     79: 
                     80: Warning: fopen(phar://%sfopen_edgecases.2.phar.php/hi): failed to open stream: internal corruption of phar "%sfopen_edgecases.2.phar.php" (truncated manifest at stub end) in %sfopen_edgecases.php on line %d
                     81: 
                     82: Warning: fopen(phar://): failed to open stream: phar error: no directory in "phar://", must have at least phar:/// for root directory (always use full path to a new phar) in %sfopen_edgecases.php on line %d
                     83: 
                     84: Warning: fopen(phar://foo.phar): failed to open stream: %s in %sfopen_edgecases.php on line %d
                     85: int(0)
                     86: int(1)
                     87: int(0)
                     88: int(2)
                     89: 
                     90: Warning: stat(): stat failed for phar:// in %sfopen_edgecases.php on line %d
                     91: bool(false)
                     92: 
                     93: Warning: stat(): stat failed for phar://foo.phar in %sfopen_edgecases.php on line %d
                     94: bool(false)
                     95: bool(true)
                     96: bool(false)
                     97: 
                     98: Warning: unlink(): internal corruption of phar "%sfopen_edgecases.2.phar.php" (truncated manifest at stub end) in %sfopen_edgecases.php on line %d
                     99: 
                    100: Warning: unlink(): phar error: unlink failed in %sfopen_edgecases.php on line %d
                    101: 
                    102: Warning: unlink(): phar error: no directory in "phar://", must have at least phar:/// for root directory (always use full path to a new phar) in %sfopen_edgecases.php on line %d
                    103: 
                    104: Warning: unlink(): phar error: unlink failed in %sfopen_edgecases.php on line %d
                    105: 
                    106: Warning: unlink(): phar error: invalid url or non-existent phar "phar://foo.phar" in %sfopen_edgecases.php on line %d
                    107: 
                    108: Warning: unlink(): phar error: unlink failed in %sfopen_edgecases.php on line %d
                    109: 
                    110: Warning: unlink(): unlink of "phar://%sfopen_edgecases.phar.php/oops" failed, file does not exist in %sfopen_edgecases.php on line %d
                    111: 
                    112: Warning: rename(): phar error: cannot rename "phar://" to "phar://": invalid or non-writable url "phar://" in %sfopen_edgecases.php on line %d
                    113: 
                    114: Warning: rename(): phar error: cannot rename "phar://%sfopen_edgecases.phar.php/hi" to "phar://": invalid or non-writable url "phar://" in %sfopen_edgecases.php on line %d
                    115: 
                    116: Warning: rename(): phar error: cannot rename "phar://foo.phar/hi" to "phar://": invalid or non-writable url "phar://" in %sfopen_edgecases.php on line %d
                    117: 
                    118: Warning: rename(): phar error: cannot rename "phar://%sfopen_edgecases.phar.php/hi" to "phar://foo.phar/hi", not within the same phar archive in %sfopen_edgecases.php on line %d
                    119: 
                    120: Warning: rename(): phar error: cannot rename "phar://%sfopen_edgecases.phar.php/hi" to "phar://%sfopen_edgecases.phar.php/there": invalid or non-writable url "phar://%sfopen_edgecases.phar.php/hi" in %sfopen_edgecases.php on line %d
                    121: 
                    122: Warning: fopen(./notfound.php): failed to open stream: No such file or directory in phar://%sfopen_edgecases.phar.php/test.php on line %d
                    123: 
                    124: ===DONE===

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>