Hi,
It's time for helly's birthday present from me (and indirectly, Derick,
who did the cp -r) :).
As Johannes requested, pecl/phar has been copied to php-src/ext/phar,
development will continue there. I suspect there may need to be some
changes at gcov.php.net to keep things running smoothly, so this is a
heads up message.
At this point, phar is ready for the big question: enable by default or
not. My benchmarking shows no detectable difference in speed between
ext/phar enabled and ext/phar disabled for regular applications, but I
would love some confirmation on this.
In addition, I just released phar 2.0.0b1 through pecl. Full
documentation is available through http://php.net/phar of the latest
API. Changes from the last update I sent to internals:
- code coverage is pushing 80%, up from about 63%
- small performance increases
- many, many small and some large bugs fixed
- compression/conversion API completely re-worked
- lots of other improvements detailed in the manual
- 373 regression/unit tests
- filename requirements completely rewritten to allow processing things
like openoffice odt zip files - full API mirroring of ext/zip, so phar can be easily used by
developers used to this API - phar.extract_list removed as obsolete
I benchmarked phpMyAdmin in/out of phar, and got 17 req/sec with phar,
and 28 req/sec without phar using APC. I also ran a compressed phar,
and got 6.62 req/sec, so compression is a significant performance hit.
There is obvious room for improvement of performance, and this is going
to be a major focus moving forward, as correctness is nearly complete
(there are still a few lines of code that are testable, mostly extreme
edge cases), and documentation is nearly complete. Another area of
focus will be tutorials in the manual on how to create phars, usability
tips, and performance information for comparing the formats.
At this point, phar's API is "slushy" in the sense that I would like to
freeze it where it is unless we've completely missed the boat on
something. I would like a full review from interested parties, and I'd
also like to openly call for security review of the code. I have spent
a lot of time trying to think of bad guy stuff that could be done with
phar, and thus far have covered things like:
- phar.readonly=1 (default) cannot be disabled except in system php.ini
(ini_set fails), and means that executable phar archives cannot be
modified by any PHP process. - aliases cannot contain any path separators or : or ;
- tar/zip-based archives can't be magically made into phar archives
simply by renaming them, as they won't contain the executable stub
necessary to run them - open_basedir/safemode checks are in place every time an external path
is accessed - I particularly need checking of this constraint, as I am
relatively unfamiliar with either system.
I've also checked for every buffer overflow/invalid read that I could
find, using safe functions wherever possible, and carefully checking the
few uses of strcat and company. Valgrind reports no leaks/problems
(except in libz, which is an external library used by zlib compression)
in 2.0.0b1. In spite of my paranoia and exhaustive attempts to kill any
potential security issues, I don't claim to be any kind of security
expert, so any and all scrutiny of phar on this front is greatly
appreciated.
Thanks to all who have contributed, particularly Marcus, Steph, Lars,
and the others who chimed in with ideas on the list.
Thanks,
Greg
It's time for helly's birthday present from me (and indirectly, Derick,
who did the cp -r) :).
Happy Birthday!
I suspect there may need to be some
changes at gcov.php.net to keep things running smoothly, so this is a
heads up message.
OK, done.
Nuno
- code coverage is pushing 80%, up from about 63%
Are these known failures?
Number of tests : 377 364
Tests skipped : 13 ( 3.4%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 256 ( 67.9%) ( 70.3%)
Tests passed : 108 ( 28.6%) ( 29.7%)
Time taken : 52 seconds
=====================================================================
FAILED TEST SUMMARY
Phar::chmod [ext/phar/tests/033.phpt]
Phar::chmod [ext/phar/tests/033a.phpt]
Phar: addFile/addFromString [ext/phar/tests/addfuncs.phpt]
Phar: alias edge cases [ext/phar/tests/alias_acrobatics.phpt]
Phar: bad parameters to various methods [ext/phar/tests/badparameters.phpt]
Phar: SLOW TEST bug #13727: "Number of files in the Phar" limited to
2042 [ext/phar/tests/bug13727.phpt]
Phar: bug #13786: "PHP crashes on phar recreate after unlink"
[ext/phar/tests/bug13786.phpt]
Phar: create and modify phar [ext/phar/tests/create_new_and_modify.phpt]
Phar: create a completely new phar [ext/phar/tests/create_new_phar.phpt]
Phar: create a completely new phar [ext/phar/tests/create_new_phar_c.phpt]
Phar: create with illegal path [ext/phar/tests/create_path_error.phpt]
Phar: mkdir/rmdir test [ext/phar/tests/dir.phpt]
Phar: test edge cases of file_get_contents()
function interception
[ext/phar/tests/fgc_edgecases.phpt]
Phar: test file_get_contents()
interception
[ext/phar/tests/file_get_contents.phpt]
Phar: test fopen()
interception [ext/phar/tests/fopen.phpt]
Phar: fopen/stat/fseek/unlink/rename edge cases
[ext/phar/tests/fopen_edgecases.phpt]
Phar: test edge cases of fopen()
function interception #2
[ext/phar/tests/fopen_edgecases2.phpt]
Phar front controller rewrite access denied
[ext/phar/tests/frontcontroller10.phpt]
Phar front controller mime type extension is not a string
[ext/phar/tests/frontcontroller11.phpt]
Phar front controller mime type unknown int
[ext/phar/tests/frontcontroller12.phpt]
Phar front controller mime type not string/int
[ext/phar/tests/frontcontroller13.phpt]
Phar front controller mime type override, Phar::PHPS
[ext/phar/tests/frontcontroller15.phpt]
Phar front controller mime type override, Phar::PHP
[ext/phar/tests/frontcontroller16.phpt]
Phar front controller PHP test [ext/phar/tests/frontcontroller2.phpt]
Phar front controller $_SERVER munging success
[ext/phar/tests/frontcontroller21.phpt]
Phar front controller include from cwd test 1
[ext/phar/tests/frontcontroller22.phpt]
Phar front controller with generic action router test
[ext/phar/tests/frontcontroller23.phpt]
Phar front controller with custom 404 php script
[ext/phar/tests/frontcontroller24.phpt]
Phar front controller with extra path_info
[ext/phar/tests/frontcontroller25.phpt]
Phar front controller with no extension [ext/phar/tests/frontcontroller27.phpt]
Phar front controller with huge file [ext/phar/tests/frontcontroller28.phpt]
Phar front controller with fatal error in php file
[ext/phar/tests/frontcontroller29.phpt]
Phar front controller phps [ext/phar/tests/frontcontroller3.phpt]
Phar front controller with invalid callback for rewrites
[ext/phar/tests/frontcontroller31.phpt]
Phar front controller with valid callback that is not good
[ext/phar/tests/frontcontroller32.phpt]
Phar front controller with valid callback that does not return any
value [ext/phar/tests/frontcontroller33.phpt]
Phar front controller with cwd [ext/phar/tests/frontcontroller34.phpt]
Phar front controller rewrite array [ext/phar/tests/frontcontroller9.phpt]
Phar: include_path with phar:// wrapper [ext/phar/tests/include_path.phpt]
Phar: set alias with invalid alias containing / \ : or ;
[ext/phar/tests/invalid_alias.phpt]
Phar: invalid set alias or stub via array access
[ext/phar/tests/invalid_setstubalias.phpt]
phar: mkdir/rmdir edge cases [ext/phar/tests/mkdir.phpt]
Phar: mounted manifest directory test [ext/phar/tests/mounteddir.phpt]
Phar: fopen a .phar for writing (existing file)
[ext/phar/tests/open_for_write_existing.phpt]
Phar: fopen a .phar for writing (new file)
[ext/phar/tests/open_for_write_newfile.phpt]
Phar: test opendir()
interception [ext/phar/tests/opendir.phpt]
Phar: test edge cases of opendir()
function interception
[ext/phar/tests/opendir_edgecases.phpt]
Phar::startBuffering()/setStub()/stopBuffering()
[ext/phar/tests/phar_begin_setstub_commit.phpt]
Phar::buildFromDirectory() - readonly
[ext/phar/tests/phar_buildfromdirectory1.phpt]
Phar::buildFromDirectory() - non-directory passed as first parameter
[ext/phar/tests/phar_buildfromdirectory2.phpt]
Phar::buildFromDirectory() - object passed as second parameter
[ext/phar/tests/phar_buildfromdirectory3.phpt]
Phar::buildFromDirectory(), directory exists
[ext/phar/tests/phar_buildfromdirectory4.phpt]
Phar::buildFromDirectory() with matching regex
[ext/phar/tests/phar_buildfromdirectory5.phpt]
Phar::buildFromDirectory() with non-matching regex
[ext/phar/tests/phar_buildfromdirectory6.phpt]
Phar::buildFromIterator() readonly [ext/phar/tests/phar_buildfromiterator1.phpt]
Phar::buildFromIterator() RegexIterator(RecursiveIteratorIterator),
SplFileInfo as current [ext/phar/tests/phar_buildfromiterator10.phpt]
Phar::buildFromIterator() wrong object
[ext/phar/tests/phar_buildfromiterator2.phpt]
Phar::buildFromIterator() iterator, but object passed
[ext/phar/tests/phar_buildfromiterator3.phpt]
Phar::buildFromIterator() iterator, 1 file passed in
[ext/phar/tests/phar_buildfromiterator4.phpt]
Phar::buildFromIterator() iterator, iterator returns non-string
[ext/phar/tests/phar_buildfromiterator5.phpt]
Phar::buildFromIterator() iterator, key is int
[ext/phar/tests/phar_buildfromiterator6.phpt]
Phar::buildFromIterator() iterator, file can't be opened
[ext/phar/tests/phar_buildfromiterator7.phpt]
Phar::buildFromIterator() RegexIterator(DirectoryIterator),
SplFileInfo as current [ext/phar/tests/phar_buildfromiterator8.phpt]
Phar::buildFromIterator() iterator, 1 file resource passed in
[ext/phar/tests/phar_buildfromiterator9.phpt]
Phar: bzipped phar [ext/phar/tests/phar_bz2.phpt]
Phar::setStub()/stopBuffering() [ext/phar/tests/phar_commitwrite.phpt]
Phar::conversion to other formats [ext/phar/tests/phar_convert_again.phpt]
Phar::convertToZip|Tar|Phar() repeated (phar_based archives)
[ext/phar/tests/phar_convert_repeated.phpt]
PharData::convertToZip|Tar|Phar() repeated (phardata_based archives)
[ext/phar/tests/phar_convert_repeated_b.phpt]
Phar::convertToTar() [ext/phar/tests/phar_convert_tar.phpt]
Phar::convertToTar() gzip compressed [ext/phar/tests/phar_convert_tar2.phpt]
Phar::convertToTar() bz2 compressed [ext/phar/tests/phar_convert_tar3.phpt]
Phar::convertToZip() [ext/phar/tests/phar_convert_zip.phpt]
Phar: copy()
[ext/phar/tests/phar_copy.phpt]
Phar context [ext/phar/tests/phar_ctx_001.phpt]
Phar::decompress() [ext/phar/tests/phar_decompress.phpt]
Phar object: iterate test with sub-directories and
RecursiveIteratorIterator [ext/phar/tests/phar_dir_iterate.phpt]
Phar: Phar::extractTo() [ext/phar/tests/phar_extract.phpt]
Phar: test edge cases of intercepted functions when the underlying
phar archive has been unlinkArchive()d
[ext/phar/tests/phar_gobyebye.phpt]
Phar: gzipped phar [ext/phar/tests/phar_gzip.phpt]
Phar: include/fopen magic [ext/phar/tests/phar_magic.phpt]
Phar: Phar::mount [ext/phar/tests/phar_mount.phpt]
Phar: ignore filenames starting with / on offsetSet
[ext/phar/tests/phar_offset_get_error.phpt]
Phar object: basics [ext/phar/tests/phar_oo_001.phpt]
Phar object: iterator & entries [ext/phar/tests/phar_oo_002.phpt]
Phar object: entry & openFile() [ext/phar/tests/phar_oo_003.phpt]
Phar object: array access [ext/phar/tests/phar_oo_006.phpt]
Phar object: access through SplFileObject [ext/phar/tests/phar_oo_007.phpt]
Phar object: iterating via SplFileObject [ext/phar/tests/phar_oo_008.phpt]
Phar object: iterating via SplFileObject and reading csv
[ext/phar/tests/phar_oo_009.phpt]
Phar object: ArrayAccess and isset [ext/phar/tests/phar_oo_010.phpt]
Phar object: add file [ext/phar/tests/phar_oo_011.phpt]
Phar object: add file [ext/phar/tests/phar_oo_011b.phpt]
Phar object: unset file [ext/phar/tests/phar_oo_012.phpt]
Phar object: unset file (confirm disk file is changed)
[ext/phar/tests/phar_oo_012_confirm.phpt]
Phar object: unset file [ext/phar/tests/phar_oo_012b.phpt]
Phar::compressFiles(Phar::BZ2) [ext/phar/tests/phar_oo_compressallbz2.phpt]
Phar::compressFiles(Phar::GZ) [ext/phar/tests/phar_oo_compressallgz.phpt]
Phar: PharFileInfo::compress(Phar::GZ)
[ext/phar/tests/phar_oo_compressed_001.phpt]
Phar: PharFileInfo::compress(Phar::BZ2)
[ext/phar/tests/phar_oo_compressed_001b.phpt]
Phar: context/compress=GZ [ext/phar/tests/phar_oo_compressed_002.phpt]
Phar: context/compress=BZip2 [ext/phar/tests/phar_oo_compressed_002b.phpt]
Phar object: getContent() [ext/phar/tests/phar_oo_getcontents.phpt]
Phar object: getContent() (verify it works with compression)
[ext/phar/tests/phar_oo_getcontentsgz.phpt]
Phar::getModified() [ext/phar/tests/phar_oo_getmodified.phpt]
Phar::isWriteable [ext/phar/tests/phar_oo_iswriteable.phpt]
Phar::getSignature() no signature [ext/phar/tests/phar_oo_nosig.phpt]
Phar::decompressFiles() [ext/phar/tests/phar_oo_uncompressall.phpt]
Phar: Phar::running() [ext/phar/tests/phar_running.phpt]
Phar::setAlias() [ext/phar/tests/phar_setalias.phpt]
Phar::setAlias() error [ext/phar/tests/phar_setalias2.phpt]
Phar: Phar::setDefaultStub() with and without arg
[ext/phar/tests/phar_setdefaultstub.phpt]
Phar::setSupportedSignatures() with hash
[ext/phar/tests/phar_setsignaturealgo2.phpt]
Phar::setStub() [ext/phar/tests/phar_stub.phpt]
Phar::setStub()/getStub() [ext/phar/tests/phar_stub_error.phpt]
Phar::setStub()/getStub() [ext/phar/tests/phar_stub_write.phpt]
Phar::setStub()/getStub() from file [ext/phar/tests/phar_stub_write_file.phpt]
Phar::unlinkArchive() [ext/phar/tests/phar_unlinkarchive.phpt]
Phar: PharFileInfo::chmod extra code coverage
[ext/phar/tests/pharfileinfo_chmod.phpt]
Phar: PharFileInfo compression-related methods
[ext/phar/tests/pharfileinfo_compression.phpt]
Phar: PharFileInfo::__construct [ext/phar/tests/pharfileinfo_construct.phpt]
Phar: PharFileInfo::__destruct [ext/phar/tests/pharfileinfo_destruct.phpt]
Phar: PharFileInfo::setMetadata/delMetadata extra code coverage
[ext/phar/tests/pharfileinfo_setmetadata.phpt]
Phar: test readfile()
interception [ext/phar/tests/readfile.phpt]
Phar: test edge cases of readfile()
function interception
[ext/phar/tests/readfile_edgecases.phpt]
Phar: test that refcounting avoids problems with deleting a file
[ext/phar/tests/refcount1.phpt]
Phar: test to ensure phar.readonly cannot be circumvented
[ext/phar/tests/security.phpt]
Phar: test stat function interceptions [ext/phar/tests/stat.phpt]
Phar: test stat function interceptions and is_file/is_link edge cases
(PHP 5.3+) [ext/phar/tests/stat2_5.3.phpt]
Phar::chmod tar-based [ext/phar/tests/tar/033.phpt]
Phar::chmod tar-based [ext/phar/tests/tar/033a.phpt]
Phar: alias edge cases [ext/phar/tests/tar/alias_acrobatics.phpt]
Phar: invalid aliases [ext/phar/tests/tar/badalias.phpt]
Phar: tar with bad checksum [ext/phar/tests/tar/badchecksum.phpt]
Phar: tar with huge filenames [ext/phar/tests/tar/bignames.phpt]
Phar: create and modify tar-based phar
[ext/phar/tests/tar/create_new_and_modify.phpt]
Phar: delete test, tar-based phar [ext/phar/tests/tar/delete.phpt]
Phar: delete a file within a tar-based .phar
[ext/phar/tests/tar/delete_in_phar.phpt]
Phar: delete a file within a tar-based .phar
[ext/phar/tests/tar/delete_in_phar_b.phpt]
Phar: delete a file within a tar-based .phar (confirm disk file is
changed) [ext/phar/tests/tar/delete_in_phar_confirm.phpt]
Phar: mkdir/rmdir test tar-based [ext/phar/tests/tar/dir.phpt]
Phar: phar-based phar named with ".tar" fails
[ext/phar/tests/tar/exists_as_phar.phpt]
Phar front controller rewrite array invalid tar-based
[ext/phar/tests/tar/frontcontroller10.phar.phpt]
Phar front controller mime type extension is not a string tar-based
[ext/phar/tests/tar/frontcontroller11.phar.phpt]
Phar front controller mime type unknown int tar-based
[ext/phar/tests/tar/frontcontroller12.phar.phpt]
Phar front controller mime type not string/int tar-based
[ext/phar/tests/tar/frontcontroller13.phar.phpt]
Phar front controller mime type override, Phar::PHPS tar-based
[ext/phar/tests/tar/frontcontroller15.phar.phpt]
Phar front controller mime type override, Phar::PHP tar-based
[ext/phar/tests/tar/frontcontroller16.phar.phpt]
Phar front controller PHP test tar-based
[ext/phar/tests/tar/frontcontroller2.phar.phpt]
Phar front controller $_SERVER munging success tar-based
[ext/phar/tests/tar/frontcontroller21.phar.phpt]
Phar front controller phps tar-based
[ext/phar/tests/tar/frontcontroller3.phar.phpt]
Phar front controller rewrite array tar-based
[ext/phar/tests/tar/frontcontroller9.phar.phpt]
Phar: tar with hard link and symbolic link [ext/phar/tests/tar/links.phpt]
Phar: tar with hard link to nowhere [ext/phar/tests/tar/links2.phpt]
Phar: tar with link to absolute path [ext/phar/tests/tar/links3.phpt]
Phar: tar with link to root directory file from root directory file
[ext/phar/tests/tar/links4.phpt]
Phar: tar with relative link to subdirectory file from subdirectory
file [ext/phar/tests/tar/links5.phpt]
Phar: fopen a .phar for writing (existing file) tar-based
[ext/phar/tests/tar/open_for_write_existing.phpt]
Phar: fopen a .phar for writing (existing file) tar-based
[ext/phar/tests/tar/open_for_write_existing_b.phpt]
Phar: fopen a .phar for writing (existing file) tar-based
[ext/phar/tests/tar/open_for_write_existing_c.phpt]
Phar: fopen a .phar for writing (new file) tar-based
[ext/phar/tests/tar/open_for_write_newfile.phpt]
Phar: fopen a .phar for writing (new file) tar-based
[ext/phar/tests/tar/open_for_write_newfile_b.phpt]
Phar: fopen a .phar for writing (new file) tar-based
[ext/phar/tests/tar/open_for_write_newfile_c.phpt]
Phar::startBuffering()/setStub()/stopBuffering() tar-based
[ext/phar/tests/tar/phar_begin_setstub_commit.phpt]
Phar::buildFromIterator() iterator, 1 file passed in tar-based
[ext/phar/tests/tar/phar_buildfromiterator4.phpt]
Phar::buildFromIterator() iterator, iterator returns non-string
tar-based [ext/phar/tests/tar/phar_buildfromiterator5.phpt]
Phar::buildFromIterator() iterator, key is int tar-based
[ext/phar/tests/tar/phar_buildfromiterator6.phpt]
Phar::buildFromIterator() iterator, file can't be opened tar-based
[ext/phar/tests/tar/phar_buildfromiterator7.phpt]
Phar::buildFromIterator() iterator, SplFileInfo as current tar-based
[ext/phar/tests/tar/phar_buildfromiterator8.phpt]
Phar::buildFromIterator() iterator, 1 file resource passed in
tar-based [ext/phar/tests/tar/phar_buildfromiterator9.phpt]
Phar::setStub()/stopBuffering() tar-based
[ext/phar/tests/tar/phar_commitwrite.phpt]
Phar::convertToPhar() from tar [ext/phar/tests/tar/phar_convert_phar.phpt]
Phar::convertToPhar() gzipped [ext/phar/tests/tar/phar_convert_phar2.phpt]
Phar::convertToPhar() bzipped [ext/phar/tests/tar/phar_convert_phar3.phpt]
Phar: copy()
tar-based [ext/phar/tests/tar/phar_copy.phpt]
Phar: include/fopen magic tar-based [ext/phar/tests/tar/phar_magic.phpt]
Phar::setAlias() tar-based [ext/phar/tests/tar/phar_setalias.phpt]
Phar::setAlias() error tar-based [ext/phar/tests/tar/phar_setalias2.phpt]
Phar: Phar::setDefaultStub() with and without arg, tar-based phar
[ext/phar/tests/tar/phar_setdefaultstub.phpt]
Phar::setStub() (tar-based) [ext/phar/tests/tar/phar_stub.phpt]
Phar::setStub()/getStub() tar-based [ext/phar/tests/tar/phar_stub_error.phpt]
Phar: test that refcounting avoids problems with deleting a file
tar-based [ext/phar/tests/tar/refcount1.phpt]
Phar: tar-based phar corrupted [ext/phar/tests/tar/tar_001.phpt]
Phar: tar-based phar corrupted 2 [ext/phar/tests/tar/tar_002.phpt]
Phar: tar-based phar, bzipped tar [ext/phar/tests/tar/tar_bz2.phpt]
Phar: tar-based phar, gzipped tar [ext/phar/tests/tar/tar_gzip.phpt]
Phar: tar-based phar, make new bzipped tar [ext/phar/tests/tar/tar_makebz2.phpt]
Phar: tar-based phar, make new gzipped tar [ext/phar/tests/tar/tar_makegz.phpt]
Phar: tar-based phar, third-party tar with no stub, Phar->getStub()
[ext/phar/tests/tar/tar_nostub.phpt]
Phar: truncated tar [ext/phar/tests/tar/truncated.phpt]
Phar: test for the odd case where we intend to remove an archive from
memory [ext/phar/tests/test_alias_unset.phpt]
Phar: verify signature parsing works [ext/phar/tests/test_signaturealgos.phpt]
Phar: ensure unset() works properly on a non-flushed phar archive
[ext/phar/tests/test_unset.phpt]
Phar: default web stub, with phar extension [ext/phar/tests/withphar_web.phpt]
Phar: test broken app [ext/phar/tests/zf_test.phpt]
Phar::chmod zip-based [ext/phar/tests/zip/033.phpt]
Phar::chmod zip-based [ext/phar/tests/zip/033a.phpt]
Phar: alias edge cases [ext/phar/tests/zip/alias_acrobatics.phpt]
Phar: test that creation of zip-based phar generates valid zip with
all bells/whistles [ext/phar/tests/zip/all.phpt]
Phar: invalid aliases [ext/phar/tests/zip/badalias.phpt]
Phar: corrupted zip (count mismatch) [ext/phar/tests/zip/corrupt_001.phpt]
Phar: corrupted zip (no end of zip record) [ext/phar/tests/zip/corrupt_002.phpt]
Phar: corrupted zip (truncated file comment)
[ext/phar/tests/zip/corrupt_003.phpt]
Phar: corrupted zip (central directory offset incorrect)
[ext/phar/tests/zip/corrupt_004.phpt]
Phar: encrypted zip [ext/phar/tests/zip/corrupt_005.phpt]
Phar: zip with file created from stdin [ext/phar/tests/zip/corrupt_006.phpt]
Phar: corrupted zip (truncated filename record)
[ext/phar/tests/zip/corrupt_007.phpt]
Phar: unsupported compression methods [ext/phar/tests/zip/corrupt_008.phpt]
Phar: create and modify zip-based phar
[ext/phar/tests/zip/create_new_and_modify.phpt]
Phar: delete test, zip-based phar [ext/phar/tests/zip/delete.phpt]
Phar: delete a file within a zip-based .phar
[ext/phar/tests/zip/delete_in_phar.phpt]
Phar: delete a file within a zip-based .phar
[ext/phar/tests/zip/delete_in_phar_b.phpt]
Phar: delete a file within a zip-based .phar (confirm disk file is
changed) [ext/phar/tests/zip/delete_in_phar_confirm.phpt]
Phar: mkdir/rmdir test zip-based [ext/phar/tests/zip/dir.phpt]
Phar: phar-based phar named with ".zip" fails
[ext/phar/tests/zip/exists_as_phar.phpt]
Phar front controller rewrite array invalid zip-based
[ext/phar/tests/zip/frontcontroller10.phar.phpt]
Phar front controller mime type extension is not a string zip-based
[ext/phar/tests/zip/frontcontroller11.phar.phpt]
Phar front controller mime type unknown int zip-based
[ext/phar/tests/zip/frontcontroller12.phar.phpt]
Phar front controller mime type not string/int zip-based
[ext/phar/tests/zip/frontcontroller13.phar.phpt]
Phar front controller mime type override, Phar::PHPS zip-based
[ext/phar/tests/zip/frontcontroller15.phar.phpt]
Phar front controller mime type override, Phar::PHP zip-based
[ext/phar/tests/zip/frontcontroller16.phar.phpt]
Phar front controller PHP test zip-based
[ext/phar/tests/zip/frontcontroller2.phar.phpt]
Phar front controller $_SERVER munging success zip-based
[ext/phar/tests/zip/frontcontroller21.phar.phpt]
Phar front controller phps zip-based
[ext/phar/tests/zip/frontcontroller3.phar.phpt]
Phar front controller rewrite array zip-based
[ext/phar/tests/zip/frontcontroller9.phar.phpt]
Phar: getAlias() with an existing phar.zip [ext/phar/tests/zip/getalias.phpt]
Phar: large zip file (zip edge cases) [ext/phar/tests/zip/largezip.phpt]
Phar with meta-data (write) zip-based
[ext/phar/tests/zip/metadata_write_commit.phpt]
Phar: test a zip archive created by openoffice [ext/phar/tests/zip/odt.phpt]
Phar: fopen a .phar for writing (existing file) zip-based
[ext/phar/tests/zip/open_for_write_existing.phpt]
Phar: fopen a .phar for writing (existing file) zip-based
[ext/phar/tests/zip/open_for_write_existing_b.phpt]
Phar: fopen a .phar for writing (existing file) zip-based
[ext/phar/tests/zip/open_for_write_existing_c.phpt]
Phar: fopen a .phar for writing (new file) zip-based
[ext/phar/tests/zip/open_for_write_newfile.phpt]
Phar: fopen a .phar for writing (new file) zip-based
[ext/phar/tests/zip/open_for_write_newfile_b.phpt]
Phar: fopen a .phar for writing (new file) zip-based
[ext/phar/tests/zip/open_for_write_newfile_c.phpt]
Phar::startBuffering()/setStub()/stopBuffering() zip-based
[ext/phar/tests/zip/phar_begin_setstub_commit.phpt]
Phar::buildFromIterator() iterator, 1 file passed in zip-based
[ext/phar/tests/zip/phar_buildfromiterator4.phpt]
Phar::buildFromIterator() iterator, iterator returns non-string
zip-based [ext/phar/tests/zip/phar_buildfromiterator5.phpt]
Phar::buildFromIterator() iterator, key is int zip-based
[ext/phar/tests/zip/phar_buildfromiterator6.phpt]
Phar::buildFromIterator() iterator, file can't be opened zip-based
[ext/phar/tests/zip/phar_buildfromiterator7.phpt]
Phar::buildFromIterator() iterator, SplFileInfo as current zip-based
[ext/phar/tests/zip/phar_buildfromiterator8.phpt]
Phar::buildFromIterator() iterator, 1 file resource passed in
[ext/phar/tests/zip/phar_buildfromiterator9.phpt]
Phar::setStub()/stopBuffering() zip-based
[ext/phar/tests/zip/phar_commitwrite.phpt]
Phar::convertToPhar() from zip [ext/phar/tests/zip/phar_convert_phar.phpt]
Phar: copy()
zip-based [ext/phar/tests/zip/phar_copy.phpt]
Phar: include/fopen magic zip-based [ext/phar/tests/zip/phar_magic.phpt]
Phar::compressFiles(Phar::BZ2) zip format
[ext/phar/tests/zip/phar_oo_compressallbz2.phpt]
Phar::compressFiles(Phar::GZ) zip format
[ext/phar/tests/zip/phar_oo_compressallgz.phpt]
Phar::setAlias() zip-based [ext/phar/tests/zip/phar_setalias.phpt]
Phar::setAlias() error zip-based [ext/phar/tests/zip/phar_setalias2.phpt]
Phar: Phar::setDefaultStub() with and without arg, zip-based phar
[ext/phar/tests/zip/phar_setdefaultstub.phpt]
Phar::setStub() (zip-based) [ext/phar/tests/zip/phar_stub.phpt]
Phar::setStub()/getStub() zip-based [ext/phar/tests/zip/phar_stub_error.phpt]
Phar: test that refcounting avoids problems with deleting a file
zip-based [ext/phar/tests/zip/refcount1.phpt]
Phar: rename test zip-based [ext/phar/tests/zip/rename.phpt]
Phar: test a zip archive created by unix "zip" command
[ext/phar/tests/zip/unixzip.phpt]
Hannes,
Are these known failures?
"Guess the configure line"? I can't reproduce this with default settings.
- Steph
Number of tests : 377 364
Tests skipped : 13 ( 3.4%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 256 ( 67.9%) ( 70.3%)
Tests passed : 108 ( 28.6%) ( 29.7%)Time taken : 52 seconds
=====================================================================
FAILED TEST SUMMARYPhar::chmod [ext/phar/tests/033.phpt]
Phar::chmod [ext/phar/tests/033a.phpt]
Phar: addFile/addFromString [ext/phar/tests/addfuncs.phpt]
Phar: alias edge cases [ext/phar/tests/alias_acrobatics.phpt]
Phar: bad parameters to various methods
[ext/phar/tests/badparameters.phpt]
Phar: SLOW TEST bug #13727: "Number of files in the Phar" limited to
2042 [ext/phar/tests/bug13727.phpt]
Phar: bug #13786: "PHP crashes on phar recreate after unlink"
[ext/phar/tests/bug13786.phpt]
Phar: create and modify phar [ext/phar/tests/create_new_and_modify.phpt]
Phar: create a completely new phar [ext/phar/tests/create_new_phar.phpt]
Phar: create a completely new phar [ext/phar/tests/create_new_phar_c.phpt]
Phar: create with illegal path [ext/phar/tests/create_path_error.phpt]
Phar: mkdir/rmdir test [ext/phar/tests/dir.phpt]
Phar: test edge cases offile_get_contents()
function interception
[ext/phar/tests/fgc_edgecases.phpt]
Phar: testfile_get_contents()
interception
[ext/phar/tests/file_get_contents.phpt]
Phar: testfopen()
interception [ext/phar/tests/fopen.phpt]
Phar: fopen/stat/fseek/unlink/rename edge cases
[ext/phar/tests/fopen_edgecases.phpt]
Phar: test edge cases offopen()
function interception #2
[ext/phar/tests/fopen_edgecases2.phpt]
Phar front controller rewrite access denied
[ext/phar/tests/frontcontroller10.phpt]
Phar front controller mime type extension is not a string
[ext/phar/tests/frontcontroller11.phpt]
Phar front controller mime type unknown int
[ext/phar/tests/frontcontroller12.phpt]
Phar front controller mime type not string/int
[ext/phar/tests/frontcontroller13.phpt]
Phar front controller mime type override, Phar::PHPS
[ext/phar/tests/frontcontroller15.phpt]
Phar front controller mime type override, Phar::PHP
[ext/phar/tests/frontcontroller16.phpt]
Phar front controller PHP test [ext/phar/tests/frontcontroller2.phpt]
Phar front controller $_SERVER munging success
[ext/phar/tests/frontcontroller21.phpt]
Phar front controller include from cwd test 1
[ext/phar/tests/frontcontroller22.phpt]
Phar front controller with generic action router test
[ext/phar/tests/frontcontroller23.phpt]
Phar front controller with custom 404 php script
[ext/phar/tests/frontcontroller24.phpt]
Phar front controller with extra path_info
[ext/phar/tests/frontcontroller25.phpt]
Phar front controller with no extension
[ext/phar/tests/frontcontroller27.phpt]
Phar front controller with huge file
[ext/phar/tests/frontcontroller28.phpt]
Phar front controller with fatal error in php file
[ext/phar/tests/frontcontroller29.phpt]
Phar front controller phps [ext/phar/tests/frontcontroller3.phpt]
Phar front controller with invalid callback for rewrites
[ext/phar/tests/frontcontroller31.phpt]
Phar front controller with valid callback that is not good
[ext/phar/tests/frontcontroller32.phpt]
Phar front controller with valid callback that does not return any
value [ext/phar/tests/frontcontroller33.phpt]
Phar front controller with cwd [ext/phar/tests/frontcontroller34.phpt]
Phar front controller rewrite array [ext/phar/tests/frontcontroller9.phpt]
Phar: include_path with phar:// wrapper [ext/phar/tests/include_path.phpt]
Phar: set alias with invalid alias containing / \ : or ;
[ext/phar/tests/invalid_alias.phpt]
Phar: invalid set alias or stub via array access
[ext/phar/tests/invalid_setstubalias.phpt]
phar: mkdir/rmdir edge cases [ext/phar/tests/mkdir.phpt]
Phar: mounted manifest directory test [ext/phar/tests/mounteddir.phpt]
Phar: fopen a .phar for writing (existing file)
[ext/phar/tests/open_for_write_existing.phpt]
Phar: fopen a .phar for writing (new file)
[ext/phar/tests/open_for_write_newfile.phpt]
Phar: testopendir()
interception [ext/phar/tests/opendir.phpt]
Phar: test edge cases ofopendir()
function interception
[ext/phar/tests/opendir_edgecases.phpt]
Phar::startBuffering()/setStub()/stopBuffering()
[ext/phar/tests/phar_begin_setstub_commit.phpt]
Phar::buildFromDirectory() - readonly
[ext/phar/tests/phar_buildfromdirectory1.phpt]
Phar::buildFromDirectory() - non-directory passed as first parameter
[ext/phar/tests/phar_buildfromdirectory2.phpt]
Phar::buildFromDirectory() - object passed as second parameter
[ext/phar/tests/phar_buildfromdirectory3.phpt]
Phar::buildFromDirectory(), directory exists
[ext/phar/tests/phar_buildfromdirectory4.phpt]
Phar::buildFromDirectory() with matching regex
[ext/phar/tests/phar_buildfromdirectory5.phpt]
Phar::buildFromDirectory() with non-matching regex
[ext/phar/tests/phar_buildfromdirectory6.phpt]
Phar::buildFromIterator() readonly
[ext/phar/tests/phar_buildfromiterator1.phpt]
Phar::buildFromIterator() RegexIterator(RecursiveIteratorIterator),
SplFileInfo as current [ext/phar/tests/phar_buildfromiterator10.phpt]
Phar::buildFromIterator() wrong object
[ext/phar/tests/phar_buildfromiterator2.phpt]
Phar::buildFromIterator() iterator, but object passed
[ext/phar/tests/phar_buildfromiterator3.phpt]
Phar::buildFromIterator() iterator, 1 file passed in
[ext/phar/tests/phar_buildfromiterator4.phpt]
Phar::buildFromIterator() iterator, iterator returns non-string
[ext/phar/tests/phar_buildfromiterator5.phpt]
Phar::buildFromIterator() iterator, key is int
[ext/phar/tests/phar_buildfromiterator6.phpt]
Phar::buildFromIterator() iterator, file can't be opened
[ext/phar/tests/phar_buildfromiterator7.phpt]
Phar::buildFromIterator() RegexIterator(DirectoryIterator),
SplFileInfo as current [ext/phar/tests/phar_buildfromiterator8.phpt]
Phar::buildFromIterator() iterator, 1 file resource passed in
[ext/phar/tests/phar_buildfromiterator9.phpt]
Phar: bzipped phar [ext/phar/tests/phar_bz2.phpt]
Phar::setStub()/stopBuffering() [ext/phar/tests/phar_commitwrite.phpt]
Phar::conversion to other formats [ext/phar/tests/phar_convert_again.phpt]
Phar::convertToZip|Tar|Phar() repeated (phar_based archives)
[ext/phar/tests/phar_convert_repeated.phpt]
PharData::convertToZip|Tar|Phar() repeated (phardata_based archives)
[ext/phar/tests/phar_convert_repeated_b.phpt]
Phar::convertToTar() [ext/phar/tests/phar_convert_tar.phpt]
Phar::convertToTar() gzip compressed
[ext/phar/tests/phar_convert_tar2.phpt]
Phar::convertToTar() bz2 compressed
[ext/phar/tests/phar_convert_tar3.phpt]
Phar::convertToZip() [ext/phar/tests/phar_convert_zip.phpt]
Phar:copy()
[ext/phar/tests/phar_copy.phpt]
Phar context [ext/phar/tests/phar_ctx_001.phpt]
Phar::decompress() [ext/phar/tests/phar_decompress.phpt]
Phar object: iterate test with sub-directories and
RecursiveIteratorIterator [ext/phar/tests/phar_dir_iterate.phpt]
Phar: Phar::extractTo() [ext/phar/tests/phar_extract.phpt]
Phar: test edge cases of intercepted functions when the underlying
phar archive has been unlinkArchive()d
[ext/phar/tests/phar_gobyebye.phpt]
Phar: gzipped phar [ext/phar/tests/phar_gzip.phpt]
Phar: include/fopen magic [ext/phar/tests/phar_magic.phpt]
Phar: Phar::mount [ext/phar/tests/phar_mount.phpt]
Phar: ignore filenames starting with / on offsetSet
[ext/phar/tests/phar_offset_get_error.phpt]
Phar object: basics [ext/phar/tests/phar_oo_001.phpt]
Phar object: iterator & entries [ext/phar/tests/phar_oo_002.phpt]
Phar object: entry & openFile() [ext/phar/tests/phar_oo_003.phpt]
Phar object: array access [ext/phar/tests/phar_oo_006.phpt]
Phar object: access through SplFileObject
[ext/phar/tests/phar_oo_007.phpt]
Phar object: iterating via SplFileObject [ext/phar/tests/phar_oo_008.phpt]
Phar object: iterating via SplFileObject and reading csv
[ext/phar/tests/phar_oo_009.phpt]
Phar object: ArrayAccess and isset [ext/phar/tests/phar_oo_010.phpt]
Phar object: add file [ext/phar/tests/phar_oo_011.phpt]
Phar object: add file [ext/phar/tests/phar_oo_011b.phpt]
Phar object: unset file [ext/phar/tests/phar_oo_012.phpt]
Phar object: unset file (confirm disk file is changed)
[ext/phar/tests/phar_oo_012_confirm.phpt]
Phar object: unset file [ext/phar/tests/phar_oo_012b.phpt]
Phar::compressFiles(Phar::BZ2)
[ext/phar/tests/phar_oo_compressallbz2.phpt]
Phar::compressFiles(Phar::GZ) [ext/phar/tests/phar_oo_compressallgz.phpt]
Phar: PharFileInfo::compress(Phar::GZ)
[ext/phar/tests/phar_oo_compressed_001.phpt]
Phar: PharFileInfo::compress(Phar::BZ2)
[ext/phar/tests/phar_oo_compressed_001b.phpt]
Phar: context/compress=GZ [ext/phar/tests/phar_oo_compressed_002.phpt]
Phar: context/compress=BZip2 [ext/phar/tests/phar_oo_compressed_002b.phpt]
Phar object: getContent() [ext/phar/tests/phar_oo_getcontents.phpt]
Phar object: getContent() (verify it works with compression)
[ext/phar/tests/phar_oo_getcontentsgz.phpt]
Phar::getModified() [ext/phar/tests/phar_oo_getmodified.phpt]
Phar::isWriteable [ext/phar/tests/phar_oo_iswriteable.phpt]
Phar::getSignature() no signature [ext/phar/tests/phar_oo_nosig.phpt]
Phar::decompressFiles() [ext/phar/tests/phar_oo_uncompressall.phpt]
Phar: Phar::running() [ext/phar/tests/phar_running.phpt]
Phar::setAlias() [ext/phar/tests/phar_setalias.phpt]
Phar::setAlias() error [ext/phar/tests/phar_setalias2.phpt]
Phar: Phar::setDefaultStub() with and without arg
[ext/phar/tests/phar_setdefaultstub.phpt]
Phar::setSupportedSignatures() with hash
[ext/phar/tests/phar_setsignaturealgo2.phpt]
Phar::setStub() [ext/phar/tests/phar_stub.phpt]
Phar::setStub()/getStub() [ext/phar/tests/phar_stub_error.phpt]
Phar::setStub()/getStub() [ext/phar/tests/phar_stub_write.phpt]
Phar::setStub()/getStub() from file
[ext/phar/tests/phar_stub_write_file.phpt]
Phar::unlinkArchive() [ext/phar/tests/phar_unlinkarchive.phpt]
Phar: PharFileInfo::chmod extra code coverage
[ext/phar/tests/pharfileinfo_chmod.phpt]
Phar: PharFileInfo compression-related methods
[ext/phar/tests/pharfileinfo_compression.phpt]
Phar: PharFileInfo::__construct
[ext/phar/tests/pharfileinfo_construct.phpt]
Phar: PharFileInfo::__destruct [ext/phar/tests/pharfileinfo_destruct.phpt]
Phar: PharFileInfo::setMetadata/delMetadata extra code coverage
[ext/phar/tests/pharfileinfo_setmetadata.phpt]
Phar: testreadfile()
interception [ext/phar/tests/readfile.phpt]
Phar: test edge cases ofreadfile()
function interception
[ext/phar/tests/readfile_edgecases.phpt]
Phar: test that refcounting avoids problems with deleting a file
[ext/phar/tests/refcount1.phpt]
Phar: test to ensure phar.readonly cannot be circumvented
[ext/phar/tests/security.phpt]
Phar: test stat function interceptions [ext/phar/tests/stat.phpt]
Phar: test stat function interceptions and is_file/is_link edge cases
(PHP 5.3+) [ext/phar/tests/stat2_5.3.phpt]
Phar::chmod tar-based [ext/phar/tests/tar/033.phpt]
Phar::chmod tar-based [ext/phar/tests/tar/033a.phpt]
Phar: alias edge cases [ext/phar/tests/tar/alias_acrobatics.phpt]
Phar: invalid aliases [ext/phar/tests/tar/badalias.phpt]
Phar: tar with bad checksum [ext/phar/tests/tar/badchecksum.phpt]
Phar: tar with huge filenames [ext/phar/tests/tar/bignames.phpt]
Phar: create and modify tar-based phar
[ext/phar/tests/tar/create_new_and_modify.phpt]
Phar: delete test, tar-based phar [ext/phar/tests/tar/delete.phpt]
Phar: delete a file within a tar-based .phar
[ext/phar/tests/tar/delete_in_phar.phpt]
Phar: delete a file within a tar-based .phar
[ext/phar/tests/tar/delete_in_phar_b.phpt]
Phar: delete a file within a tar-based .phar (confirm disk file is
changed) [ext/phar/tests/tar/delete_in_phar_confirm.phpt]
Phar: mkdir/rmdir test tar-based [ext/phar/tests/tar/dir.phpt]
Phar: phar-based phar named with ".tar" fails
[ext/phar/tests/tar/exists_as_phar.phpt]
Phar front controller rewrite array invalid tar-based
[ext/phar/tests/tar/frontcontroller10.phar.phpt]
Phar front controller mime type extension is not a string tar-based
[ext/phar/tests/tar/frontcontroller11.phar.phpt]
Phar front controller mime type unknown int tar-based
[ext/phar/tests/tar/frontcontroller12.phar.phpt]
Phar front controller mime type not string/int tar-based
[ext/phar/tests/tar/frontcontroller13.phar.phpt]
Phar front controller mime type override, Phar::PHPS tar-based
[ext/phar/tests/tar/frontcontroller15.phar.phpt]
Phar front controller mime type override, Phar::PHP tar-based
[ext/phar/tests/tar/frontcontroller16.phar.phpt]
Phar front controller PHP test tar-based
[ext/phar/tests/tar/frontcontroller2.phar.phpt]
Phar front controller $_SERVER munging success tar-based
[ext/phar/tests/tar/frontcontroller21.phar.phpt]
Phar front controller phps tar-based
[ext/phar/tests/tar/frontcontroller3.phar.phpt]
Phar front controller rewrite array tar-based
[ext/phar/tests/tar/frontcontroller9.phar.phpt]
Phar: tar with hard link and symbolic link [ext/phar/tests/tar/links.phpt]
Phar: tar with hard link to nowhere [ext/phar/tests/tar/links2.phpt]
Phar: tar with link to absolute path [ext/phar/tests/tar/links3.phpt]
Phar: tar with link to root directory file from root directory file
[ext/phar/tests/tar/links4.phpt]
Phar: tar with relative link to subdirectory file from subdirectory
file [ext/phar/tests/tar/links5.phpt]
Phar: fopen a .phar for writing (existing file) tar-based
[ext/phar/tests/tar/open_for_write_existing.phpt]
Phar: fopen a .phar for writing (existing file) tar-based
[ext/phar/tests/tar/open_for_write_existing_b.phpt]
Phar: fopen a .phar for writing (existing file) tar-based
[ext/phar/tests/tar/open_for_write_existing_c.phpt]
Phar: fopen a .phar for writing (new file) tar-based
[ext/phar/tests/tar/open_for_write_newfile.phpt]
Phar: fopen a .phar for writing (new file) tar-based
[ext/phar/tests/tar/open_for_write_newfile_b.phpt]
Phar: fopen a .phar for writing (new file) tar-based
[ext/phar/tests/tar/open_for_write_newfile_c.phpt]
Phar::startBuffering()/setStub()/stopBuffering() tar-based
[ext/phar/tests/tar/phar_begin_setstub_commit.phpt]
Phar::buildFromIterator() iterator, 1 file passed in tar-based
[ext/phar/tests/tar/phar_buildfromiterator4.phpt]
Phar::buildFromIterator() iterator, iterator returns non-string
tar-based [ext/phar/tests/tar/phar_buildfromiterator5.phpt]
Phar::buildFromIterator() iterator, key is int tar-based
[ext/phar/tests/tar/phar_buildfromiterator6.phpt]
Phar::buildFromIterator() iterator, file can't be opened tar-based
[ext/phar/tests/tar/phar_buildfromiterator7.phpt]
Phar::buildFromIterator() iterator, SplFileInfo as current tar-based
[ext/phar/tests/tar/phar_buildfromiterator8.phpt]
Phar::buildFromIterator() iterator, 1 file resource passed in
tar-based [ext/phar/tests/tar/phar_buildfromiterator9.phpt]
Phar::setStub()/stopBuffering() tar-based
[ext/phar/tests/tar/phar_commitwrite.phpt]
Phar::convertToPhar() from tar [ext/phar/tests/tar/phar_convert_phar.phpt]
Phar::convertToPhar() gzipped [ext/phar/tests/tar/phar_convert_phar2.phpt]
Phar::convertToPhar() bzipped [ext/phar/tests/tar/phar_convert_phar3.phpt]
Phar:copy()
tar-based [ext/phar/tests/tar/phar_copy.phpt]
Phar: include/fopen magic tar-based [ext/phar/tests/tar/phar_magic.phpt]
Phar::setAlias() tar-based [ext/phar/tests/tar/phar_setalias.phpt]
Phar::setAlias() error tar-based [ext/phar/tests/tar/phar_setalias2.phpt]
Phar: Phar::setDefaultStub() with and without arg, tar-based phar
[ext/phar/tests/tar/phar_setdefaultstub.phpt]
Phar::setStub() (tar-based) [ext/phar/tests/tar/phar_stub.phpt]
Phar::setStub()/getStub() tar-based
[ext/phar/tests/tar/phar_stub_error.phpt]
Phar: test that refcounting avoids problems with deleting a file
tar-based [ext/phar/tests/tar/refcount1.phpt]
Phar: tar-based phar corrupted [ext/phar/tests/tar/tar_001.phpt]
Phar: tar-based phar corrupted 2 [ext/phar/tests/tar/tar_002.phpt]
Phar: tar-based phar, bzipped tar [ext/phar/tests/tar/tar_bz2.phpt]
Phar: tar-based phar, gzipped tar [ext/phar/tests/tar/tar_gzip.phpt]
Phar: tar-based phar, make new bzipped tar
[ext/phar/tests/tar/tar_makebz2.phpt]
Phar: tar-based phar, make new gzipped tar
[ext/phar/tests/tar/tar_makegz.phpt]
Phar: tar-based phar, third-party tar with no stub, Phar->getStub()
[ext/phar/tests/tar/tar_nostub.phpt]
Phar: truncated tar [ext/phar/tests/tar/truncated.phpt]
Phar: test for the odd case where we intend to remove an archive from
memory [ext/phar/tests/test_alias_unset.phpt]
Phar: verify signature parsing works
[ext/phar/tests/test_signaturealgos.phpt]
Phar: ensure unset() works properly on a non-flushed phar archive
[ext/phar/tests/test_unset.phpt]
Phar: default web stub, with phar extension
[ext/phar/tests/withphar_web.phpt]
Phar: test broken app [ext/phar/tests/zf_test.phpt]
Phar::chmod zip-based [ext/phar/tests/zip/033.phpt]
Phar::chmod zip-based [ext/phar/tests/zip/033a.phpt]
Phar: alias edge cases [ext/phar/tests/zip/alias_acrobatics.phpt]
Phar: test that creation of zip-based phar generates valid zip with
all bells/whistles [ext/phar/tests/zip/all.phpt]
Phar: invalid aliases [ext/phar/tests/zip/badalias.phpt]
Phar: corrupted zip (count mismatch) [ext/phar/tests/zip/corrupt_001.phpt]
Phar: corrupted zip (no end of zip record)
[ext/phar/tests/zip/corrupt_002.phpt]
Phar: corrupted zip (truncated file comment)
[ext/phar/tests/zip/corrupt_003.phpt]
Phar: corrupted zip (central directory offset incorrect)
[ext/phar/tests/zip/corrupt_004.phpt]
Phar: encrypted zip [ext/phar/tests/zip/corrupt_005.phpt]
Phar: zip with file created from stdin
[ext/phar/tests/zip/corrupt_006.phpt]
Phar: corrupted zip (truncated filename record)
[ext/phar/tests/zip/corrupt_007.phpt]
Phar: unsupported compression methods
[ext/phar/tests/zip/corrupt_008.phpt]
Phar: create and modify zip-based phar
[ext/phar/tests/zip/create_new_and_modify.phpt]
Phar: delete test, zip-based phar [ext/phar/tests/zip/delete.phpt]
Phar: delete a file within a zip-based .phar
[ext/phar/tests/zip/delete_in_phar.phpt]
Phar: delete a file within a zip-based .phar
[ext/phar/tests/zip/delete_in_phar_b.phpt]
Phar: delete a file within a zip-based .phar (confirm disk file is
changed) [ext/phar/tests/zip/delete_in_phar_confirm.phpt]
Phar: mkdir/rmdir test zip-based [ext/phar/tests/zip/dir.phpt]
Phar: phar-based phar named with ".zip" fails
[ext/phar/tests/zip/exists_as_phar.phpt]
Phar front controller rewrite array invalid zip-based
[ext/phar/tests/zip/frontcontroller10.phar.phpt]
Phar front controller mime type extension is not a string zip-based
[ext/phar/tests/zip/frontcontroller11.phar.phpt]
Phar front controller mime type unknown int zip-based
[ext/phar/tests/zip/frontcontroller12.phar.phpt]
Phar front controller mime type not string/int zip-based
[ext/phar/tests/zip/frontcontroller13.phar.phpt]
Phar front controller mime type override, Phar::PHPS zip-based
[ext/phar/tests/zip/frontcontroller15.phar.phpt]
Phar front controller mime type override, Phar::PHP zip-based
[ext/phar/tests/zip/frontcontroller16.phar.phpt]
Phar front controller PHP test zip-based
[ext/phar/tests/zip/frontcontroller2.phar.phpt]
Phar front controller $_SERVER munging success zip-based
[ext/phar/tests/zip/frontcontroller21.phar.phpt]
Phar front controller phps zip-based
[ext/phar/tests/zip/frontcontroller3.phar.phpt]
Phar front controller rewrite array zip-based
[ext/phar/tests/zip/frontcontroller9.phar.phpt]
Phar: getAlias() with an existing phar.zip
[ext/phar/tests/zip/getalias.phpt]
Phar: large zip file (zip edge cases) [ext/phar/tests/zip/largezip.phpt]
Phar with meta-data (write) zip-based
[ext/phar/tests/zip/metadata_write_commit.phpt]
Phar: test a zip archive created by openoffice
[ext/phar/tests/zip/odt.phpt]
Phar: fopen a .phar for writing (existing file) zip-based
[ext/phar/tests/zip/open_for_write_existing.phpt]
Phar: fopen a .phar for writing (existing file) zip-based
[ext/phar/tests/zip/open_for_write_existing_b.phpt]
Phar: fopen a .phar for writing (existing file) zip-based
[ext/phar/tests/zip/open_for_write_existing_c.phpt]
Phar: fopen a .phar for writing (new file) zip-based
[ext/phar/tests/zip/open_for_write_newfile.phpt]
Phar: fopen a .phar for writing (new file) zip-based
[ext/phar/tests/zip/open_for_write_newfile_b.phpt]
Phar: fopen a .phar for writing (new file) zip-based
[ext/phar/tests/zip/open_for_write_newfile_c.phpt]
Phar::startBuffering()/setStub()/stopBuffering() zip-based
[ext/phar/tests/zip/phar_begin_setstub_commit.phpt]
Phar::buildFromIterator() iterator, 1 file passed in zip-based
[ext/phar/tests/zip/phar_buildfromiterator4.phpt]
Phar::buildFromIterator() iterator, iterator returns non-string
zip-based [ext/phar/tests/zip/phar_buildfromiterator5.phpt]
Phar::buildFromIterator() iterator, key is int zip-based
[ext/phar/tests/zip/phar_buildfromiterator6.phpt]
Phar::buildFromIterator() iterator, file can't be opened zip-based
[ext/phar/tests/zip/phar_buildfromiterator7.phpt]
Phar::buildFromIterator() iterator, SplFileInfo as current zip-based
[ext/phar/tests/zip/phar_buildfromiterator8.phpt]
Phar::buildFromIterator() iterator, 1 file resource passed in
[ext/phar/tests/zip/phar_buildfromiterator9.phpt]
Phar::setStub()/stopBuffering() zip-based
[ext/phar/tests/zip/phar_commitwrite.phpt]
Phar::convertToPhar() from zip [ext/phar/tests/zip/phar_convert_phar.phpt]
Phar:copy()
zip-based [ext/phar/tests/zip/phar_copy.phpt]
Phar: include/fopen magic zip-based [ext/phar/tests/zip/phar_magic.phpt]
Phar::compressFiles(Phar::BZ2) zip format
[ext/phar/tests/zip/phar_oo_compressallbz2.phpt]
Phar::compressFiles(Phar::GZ) zip format
[ext/phar/tests/zip/phar_oo_compressallgz.phpt]
Phar::setAlias() zip-based [ext/phar/tests/zip/phar_setalias.phpt]
Phar::setAlias() error zip-based [ext/phar/tests/zip/phar_setalias2.phpt]
Phar: Phar::setDefaultStub() with and without arg, zip-based phar
[ext/phar/tests/zip/phar_setdefaultstub.phpt]
Phar::setStub() (zip-based) [ext/phar/tests/zip/phar_stub.phpt]
Phar::setStub()/getStub() zip-based
[ext/phar/tests/zip/phar_stub_error.phpt]
Phar: test that refcounting avoids problems with deleting a file
zip-based [ext/phar/tests/zip/refcount1.phpt]
Phar: rename test zip-based [ext/phar/tests/zip/rename.phpt]
Phar: test a zip archive created by unix "zip" command
[ext/phar/tests/zip/unixzip.phpt]
Hannes,
Are these known failures?
"Guess the configure line"? I can't reproduce this with default settings.
See my mail about phar_detect_phar_fname_ext(), it might be the same problem.
--
Wbr,
Antony Dovgal
Hannes,
Are these known failures?
"Guess the configure line"? I can't reproduce this with default settings.
'./configure'
'--enable-debug'
'--with-zend-vm=GOTO'
'--without-pear'
'--with-zlib'
'--with-bz2'
'--with-openssl'
'--with-mysql=mysqlnd'
'--with-mysqli=mysqlnd'
'--enable-intl'
'--enable-phar'
'--with-xsl'
'--with-curl'
'--enable-zip' \
and default php.ini. Yes. I did ./cvsclean and obviously ./buildconf
Looks like the buildtest-process script (or php.qa.reports) is
rejecting the failure report.. probably due to the size of the report
-Hannes
and default php.ini. Yes. I did ./cvsclean and obviously ./buildconf
Looks like the buildtest-process script (or php.qa.reports) is
rejecting the failure report.. probably due to the size of the report
Sorry Hannes, should've kept it on-list. The clue was in Tony's mail, I'm
just testing a fix now.
- Steph
-Hannes
Sorry Hannes, should've kept it on-list. The clue was in Tony's mail, I'm
just testing a fix now.
"Access denied, insufficient karma".
Fix is in PECL CVS, what do I do now? Mail in a patch against 5_3?
- Steph
Sorry Hannes, should've kept it on-list. The clue was in Tony's mail, I'm
just testing a fix now."Access denied, insufficient karma".
Fix is in PECL CVS, what do I do now? Mail in a patch against 5_3?
You should try again, karma should be there, now.
johannes
You should try again, karma should be there, now.
Thanks Johannes :)
Hannes, let me know if.
- Steph
You should try again, karma should be there, now.
Thanks Johannes :)
Hannes, let me know if.
Munch better, only 42 failures now.
001+ Content-type: text/html; charset=utf-8
001- Content-type: text/html
Looks like all of them are failing like this.
-Hannes
Hi Hannes,
Munch better, only 42 failures now.
001+ Content-type: text/html; charset=utf-8
001- Content-type: text/htmlLooks like all of them are failing like this.
That's really not a lot to go on. Which are 'all of them'? The
frontcontrollers?
Thanks,
- Steph
Steph Fox wrote:
Hi Hannes,
Munch better, only 42 failures now.
001+ Content-type: text/html; charset=utf-8
001- Content-type: text/htmlLooks like all of them are failing like this.
That's really not a lot to go on. Which are 'all of them'? The
frontcontrollers?
I would guess all tests that have --EXPECT_HEADERS-- and text/html.
We need to put default_charset= in the --INI-- section and then the
tests will pass. Do you want to do this Steph, or should I?
Greg
Hi Greg,
I would guess all tests that have --EXPECT_HEADERS-- and text/html.
We need to put default_charset= in the --INI-- section and then the
tests will pass. Do you want to do this Steph, or should I?
Would you mind? I'm caught up in HEAD right now :\
- Steph
Greg
Thanks to all who have contributed, particularly Marcus, Steph, Lars,
and the others who chimed in with ideas on the list.
phar_detect_phar_fname_ext() fails if is_complete = 1 and filename contains ".".
For example:
Breakpoint 1, phar_detect_phar_fname_ext (filename=0x124db80 "/local/qa/5_3.zts/ext/phar/tests/DataArchive.phar", check_length=1, ext_str=0x7fff44a08fd8,
ext_len=0x7fff44a08fcc, executable=1, for_create=0, is_complete=1, tsrm_ls=0xf5b0c0) at /local/qa/5_3.zts/ext/phar/phar.c:1557
1557 int filename_len = strlen(filename);
(gdb)
<..skip..>
1651 switch (phar_check_str(filename, *ext_str, *ext_len, executable, for_create TSRMLS_CC)) {
(gdb)
1656 if (is_complete) {
(gdb)
1657 return FAILURE;
(gdb) p *ext_str
$9 = 0x124db8d ".zts/ext/phar/tests/DataArchive.phar"
This causes numerous test failures:
Tests failed : 214 ( 56.8%) ( 58.8%)
Tests passed : 150 ( 39.8%) ( 41.2%)
--
Wbr,
Antony Dovgal
2008/5/13 Antony Dovgal tony@daylessday.org:
Thanks to all who have contributed, particularly Marcus, Steph, Lars,
and the others who chimed in with ideas on the list.phar_detect_phar_fname_ext() fails if is_complete = 1 and filename contains
".".For example:
Breakpoint 1, phar_detect_phar_fname_ext (filename=0x124db80
"/local/qa/5_3.zts/ext/phar/tests/DataArchive.phar", check_length=1,
Am I being picky in saying that having a . in a folder containing a
file should be allowed? And if there is an extension on the filename,
then it will also have a .
What happens for relative filenames?
--
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"
Richard Quadling wrote:
2008/5/13 Antony Dovgal tony@daylessday.org:
Thanks to all who have contributed, particularly Marcus, Steph, Lars,
and the others who chimed in with ideas on the list.phar_detect_phar_fname_ext() fails if is_complete = 1 and filename contains
".".For example:
Breakpoint 1, phar_detect_phar_fname_ext (filename=0x124db80
"/local/qa/5_3.zts/ext/phar/tests/DataArchive.phar", check_length=1,Am I being picky in saying that having a . in a folder containing a
file should be allowed? And if there is an extension on the filename,
then it will also have a .
This was always the intention, and is already fixed. In fact, opening
URLs like phar://whatever/has.dot/my.phar/internal/file.php already
worked, the only thing broken was instantiating a Phar object with a
path containing "."
What happens for relative filenames?
They have worked since phar 2.0.0a1. The only requirement for phar to
detect its file is that you either use a registered alias or that the
filename contain a ".". Executable phar archives must also contain
".phar" as part of the filename extension.
In short, the problem with Phar objects crept in only because none of us
had a path in our dev environment containing a "." and didn't think to
add a test case for it until the problem appeared. It's now fixed, and
all tests pass in CVS.
Greg
2008/5/14 Gregory Beaver greg@chiaraquartet.net:
Richard Quadling wrote:
2008/5/13 Antony Dovgal tony@daylessday.org:
Thanks to all who have contributed, particularly Marcus, Steph, Lars,
and the others who chimed in with ideas on the list.phar_detect_phar_fname_ext() fails if is_complete = 1 and filename contains
".".For example:
Breakpoint 1, phar_detect_phar_fname_ext (filename=0x124db80
"/local/qa/5_3.zts/ext/phar/tests/DataArchive.phar", check_length=1,Am I being picky in saying that having a . in a folder containing a
file should be allowed? And if there is an extension on the filename,
then it will also have a .This was always the intention, and is already fixed. In fact, opening
URLs like phar://whatever/has.dot/my.phar/internal/file.php already
worked, the only thing broken was instantiating a Phar object with a
path containing "."What happens for relative filenames?
They have worked since phar 2.0.0a1. The only requirement for phar to
detect its file is that you either use a registered alias or that the
filename contain a ".". Executable phar archives must also contain
".phar" as part of the filename extension.In short, the problem with Phar objects crept in only because none of us
had a path in our dev environment containing a "." and didn't think to
add a test case for it until the problem appeared. It's now fixed, and
all tests pass in CVS.Greg
Thank you.
--
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"
Hi,
It's time for helly's birthday present from me (and indirectly, Derick,
who did the cp -r) :).As Johannes requested, pecl/phar has been copied to php-src/ext/phar,
Great work! :-)
johannes