1
0
mirror of https://github.com/Ne-Lexa/php-zip.git synced 2025-03-21 06:59:40 +01:00

Add tests

This commit is contained in:
Ne-Lexa 2017-03-10 19:03:59 +03:00
parent 6691858b95
commit 08c890ba24
2 changed files with 96 additions and 6 deletions

View File

@ -498,8 +498,7 @@ class ZipFile implements \Countable, \ArrayAccess, \Iterator
} else {
$compressionMethod = self::METHOD_STORED;
}
}
elseif (!in_array($compressionMethod, self::$allowCompressionMethods, true)) {
} elseif (!in_array($compressionMethod, self::$allowCompressionMethods, true)) {
throw new ZipUnsupportMethod('Unsupported method ' . $compressionMethod);
}
@ -860,12 +859,12 @@ class ZipFile implements \Countable, \ArrayAccess, \Iterator
$filename = (string)$filename;
$tempFilename = $filename . '.temp' . uniqid();
if (!($handle = fopen($tempFilename, 'w+b'))) {
if (!($handle = @fopen($tempFilename, 'w+b'))) {
throw new InvalidArgumentException("File " . $tempFilename . ' can not open from write.');
}
$this->saveAsStream($handle);
if (!rename($tempFilename, $filename)) {
if (!@rename($tempFilename, $filename)) {
throw new ZipException('Can not move ' . $tempFilename . ' to ' . $filename);
}
}
@ -999,6 +998,10 @@ class ZipFile implements \Countable, \ArrayAccess, \Iterator
if ($entryName === null) {
throw new InvalidArgumentException('entryName is null');
}
$entryName = (string)$entryName;
if (strlen($entryName) === 0) {
throw new InvalidArgumentException('entryName is empty');
}
if ($entryName[strlen($entryName) - 1] === '/') {
$this->addEmptyDir($entryName);
} else {

View File

@ -531,6 +531,24 @@ class ZipFileTest extends ZipTestCase
$zipFile->close();
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage Glob pattern is empty
*/
public function testDeleteFromGlobFailNull(){
$zipFile = new ZipFile();
$zipFile->deleteFromGlob(null);
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage Glob pattern is empty
*/
public function testDeleteFromGlobFailEmpty(){
$zipFile = new ZipFile();
$zipFile->deleteFromGlob('');
}
/**
* Delete entries from regex pattern
*/
@ -558,6 +576,24 @@ class ZipFileTest extends ZipTestCase
$zipFile->close();
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage Regex pattern is empty.
*/
public function testDeleteFromRegexFailNull(){
$zipFile = new ZipFile();
$zipFile->deleteFromRegex(null);
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage Regex pattern is empty.
*/
public function testDeleteFromRegexFailEmpty(){
$zipFile = new ZipFile();
$zipFile->deleteFromRegex('');
}
/**
* Delete all entries
*/
@ -1015,6 +1051,26 @@ class ZipFileTest extends ZipTestCase
$zipFile->close();
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage entryName is null
*/
public function testAddFromArrayAccessNullName()
{
$zipFile = new ZipFile();
$zipFile[null] = 'content';
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage entryName is empty
*/
public function testAddFromArrayAccessEmptyName()
{
$zipFile = new ZipFile();
$zipFile[''] = 'content';
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage Contents is null
@ -1191,6 +1247,35 @@ class ZipFileTest extends ZipTestCase
$zipFile->addFile($this->outputFilename);
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage handle is not resource
*/
public function testSaveAsStreamBadStream()
{
$zipFile = new ZipFile();
$zipFile->saveAsStream("bad stream");
}
/**
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage can not open from write
*/
public function testSaveAsFileNotWritable()
{
$this->outputFilename = sys_get_temp_dir() . '/zipExtractTest';
if (is_dir($this->outputFilename)) {
FilesUtil::removeDir($this->outputFilename);
}
self::assertTrue(mkdir($this->outputFilename, 0444, true));
self::assertTrue(chmod($this->outputFilename, 0444));
$this->outputFilename .= '/' . uniqid() . '.zip';
$zipFile = new ZipFile();
$zipFile->saveAsFile($this->outputFilename);
}
/**
* Test `ZipFile` implemented \ArrayAccess, \Countable and |iterator.
*/
@ -1280,7 +1365,8 @@ class ZipFileTest extends ZipTestCase
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage DirName empty
*/
public function testAddEmptyDirNullName(){
public function testAddEmptyDirNullName()
{
$zipFile = new ZipFile();
$zipFile->addEmptyDir(null);
}
@ -1289,7 +1375,8 @@ class ZipFileTest extends ZipTestCase
* @expectedException \PhpZip\Exception\InvalidArgumentException
* @expectedExceptionMessage DirName empty
*/
public function testAddEmptyDirEmptyName(){
public function testAddEmptyDirEmptyName()
{
$zipFile = new ZipFile();
$zipFile->addEmptyDir("");
}