1
0
mirror of https://github.com/Ne-Lexa/php-zip.git synced 2025-08-01 13:10:09 +02:00

Merge tag '3.2.2' into develop

Tagging hotfix 3.2.2 3.2.2

# Conflicts:
#	.travis.yml
#	tests/ZipFileTest.php
This commit is contained in:
Ne-Lexa
2020-02-04 11:36:29 +03:00
4 changed files with 42 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ namespace PhpZip\Model\Data;
use PhpZip\Exception\ZipException; use PhpZip\Exception\ZipException;
use PhpZip\Model\ZipData; use PhpZip\Model\ZipData;
use PhpZip\Model\ZipEntry;
/** /**
* Class ZipFileData. * Class ZipFileData.
@@ -16,11 +17,12 @@ class ZipFileData implements ZipData
/** /**
* ZipStringData constructor. * ZipStringData constructor.
* *
* @param ZipEntry $zipEntry
* @param \SplFileInfo $fileInfo * @param \SplFileInfo $fileInfo
* *
* @throws ZipException * @throws ZipException
*/ */
public function __construct(\SplFileInfo $fileInfo) public function __construct(ZipEntry $zipEntry, \SplFileInfo $fileInfo)
{ {
if (!$fileInfo->isFile()) { if (!$fileInfo->isFile()) {
throw new ZipException('$fileInfo is not a file.'); throw new ZipException('$fileInfo is not a file.');
@@ -31,6 +33,7 @@ class ZipFileData implements ZipData
} }
$this->file = $fileInfo; $this->file = $fileInfo;
$zipEntry->setUncompressedSize($fileInfo->getSize());
} }
/** /**

View File

@@ -711,10 +711,9 @@ class ZipFile implements ZipFileInterface
ZipCompressionMethod::DEFLATED; ZipCompressionMethod::DEFLATED;
} }
$zipEntry->setUncompressedSize($file->getSize());
$zipEntry->setCompressionMethod($compressionMethod); $zipEntry->setCompressionMethod($compressionMethod);
$zipData = new ZipFileData($file); $zipData = new ZipFileData($zipEntry, $file);
} elseif ($file->isDir()) { } elseif ($file->isDir()) {
$zipEntry->setCompressionMethod(ZipCompressionMethod::STORED); $zipEntry->setCompressionMethod(ZipCompressionMethod::STORED);
$zipEntry->setUncompressedSize(0); $zipEntry->setUncompressedSize(0);

View File

@@ -1571,9 +1571,10 @@ class ZipEntryTest extends TestCase
public function testClone() public function testClone()
{ {
$newUnixExtra = new NewUnixExtraField(); $newUnixExtra = new NewUnixExtraField();
$zipData = new ZipFileData(new \SplFileInfo(__FILE__));
$zipEntry = new ZipEntry('entry'); $zipEntry = new ZipEntry('entry');
$zipData = new ZipFileData($zipEntry, new \SplFileInfo(__FILE__));
$zipEntry->addExtraField($newUnixExtra); $zipEntry->addExtraField($newUnixExtra);
$zipEntry->setData($zipData); $zipEntry->setData($zipData);

View File

@@ -10,6 +10,7 @@ use PhpZip\Exception\InvalidArgumentException;
use PhpZip\Exception\ZipEntryNotFoundException; use PhpZip\Exception\ZipEntryNotFoundException;
use PhpZip\Exception\ZipException; use PhpZip\Exception\ZipException;
use PhpZip\Exception\ZipUnsupportMethodException; use PhpZip\Exception\ZipUnsupportMethodException;
use PhpZip\Model\Data\ZipFileData;
use PhpZip\Model\ZipEntry; use PhpZip\Model\ZipEntry;
use PhpZip\Model\ZipInfo; use PhpZip\Model\ZipInfo;
use PhpZip\Util\FilesUtil; use PhpZip\Util\FilesUtil;
@@ -2459,6 +2460,10 @@ class ZipFileTest extends ZipTestCase
$zipFile->close(); $zipFile->close();
} }
/**
* @throws ZipEntryNotFoundException
* @throws ZipException
*/
public function testNoData() public function testNoData()
{ {
$this->setExpectedException(ZipException::class, 'No data for zip entry file'); $this->setExpectedException(ZipException::class, 'No data for zip entry file');
@@ -2476,4 +2481,34 @@ class ZipFileTest extends ZipTestCase
$zipFile->close(); $zipFile->close();
} }
} }
/**
* @throws ZipEntryNotFoundException
* @throws ZipException
*/
public function testReplaceEntryContentsByFile()
{
$entryName = basename(__FILE__);
$zipFile = new ZipFile();
$zipFile[$entryName] = 'contents';
$zipFile->saveAsFile($this->outputFilename);
$zipFile->close();
$zipFile->openFile($this->outputFilename);
$entry = $zipFile->getEntry($entryName);
$data = new ZipFileData($entry, new \SplFileInfo(__FILE__));
$entry->setData($data);
$zipFile->saveAsFile($this->outputFilename);
$zipFile->close();
self::assertCorrectZipArchive($this->outputFilename);
$zipFile->openFile($this->outputFilename);
static::assertSame(
$zipFile->getEntryContents($entryName),
file_get_contents(__FILE__)
);
$zipFile->close();
}
} }