mirror of
https://github.com/php/php-src.git
synced 2025-08-18 06:58:55 +02:00
- Make sure default alias is set in phar.zip
- Add test
This commit is contained in:
parent
95c792c5d8
commit
dba1c11685
2 changed files with 67 additions and 1 deletions
59
ext/phar/tests/zip/getalias.phpt
Normal file
59
ext/phar/tests/zip/getalias.phpt
Normal file
|
@ -0,0 +1,59 @@
|
|||
--TEST--
|
||||
Phar: getAlias() with an existing phar.zip
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("phar")) die("skip"); ?>
|
||||
--INI--
|
||||
phar.readonly=0
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.zip';
|
||||
|
||||
// sanity check with a virgin phar.zip
|
||||
$phar = new Phar($fname);
|
||||
var_dump($phar->getAlias());
|
||||
unset($phar);
|
||||
|
||||
copy(dirname(__FILE__) . '/files/metadata.phar.zip', $fname);
|
||||
|
||||
// existing phar.zip, no alias set
|
||||
$phar = new Phar($fname);
|
||||
var_dump($phar->getAlias());
|
||||
|
||||
// check that default alias can be overwritten
|
||||
$phar->setAlias('jiminycricket');
|
||||
var_dump($phar->getAlias());
|
||||
unset($phar);
|
||||
|
||||
// existing phar.zip, alias set
|
||||
$phar = new Phar($fname);
|
||||
var_dump($phar->getAlias());
|
||||
|
||||
// check that alias can't be set manually
|
||||
try {
|
||||
$phar['.phar/alias.txt'] = 'pinocchio';
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage()."\n";
|
||||
}
|
||||
var_dump($phar->getAlias());
|
||||
|
||||
// check that user-defined alias can be overwritten
|
||||
$phar->setAlias('pinocchio');
|
||||
var_dump($phar->getAlias());
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
--CLEAN--
|
||||
<?php
|
||||
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.zip');
|
||||
__HALT_COMPILER();
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(%d) "%sgetalias.phar.zip"
|
||||
string(%d) "%sgetalias.phar.zip"
|
||||
string(13) "jiminycricket"
|
||||
string(13) "jiminycricket"
|
||||
Cannot set alias ".phar/alias.txt" directly in phar "%sgetalias.phar.zip", use setAlias
|
||||
string(13) "jiminycricket"
|
||||
string(9) "pinocchio"
|
||||
===DONE===
|
|
@ -241,6 +241,13 @@ foundit:
|
|||
mydata->ext_len = (mydata->fname + fname_len) - mydata->ext;
|
||||
}
|
||||
}
|
||||
if (!alias_len) {
|
||||
mydata->alias = estrndup(fname, fname_len);
|
||||
#ifdef PHP_WIN32
|
||||
phar_unixify_path_separators(mydata->alias, fname_len);
|
||||
#endif
|
||||
mydata->alias_len = fname_len;
|
||||
}
|
||||
/* clean up on big-endian systems */
|
||||
/* seek to central directory */
|
||||
php_stream_seek(fp, PHAR_GET_32(locator.cdir_offset), SEEK_SET);
|
||||
|
@ -269,7 +276,7 @@ foundit:
|
|||
efree(mydata->alias); \
|
||||
} \
|
||||
efree(mydata); \
|
||||
return FAILURE
|
||||
return FAILURE;
|
||||
|
||||
/* add each central directory item to the manifest */
|
||||
for (i = 0; i < locator.count; ++i) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue