1
0
Fork 0

Warn identical names w/ different capitalization - extract zip archive

Warn about identical names with different capitalization on zip archive
extract failure (Not a directory)

Issue #5938
pull/4865/merge
AjiYakin 2017-04-09 01:47:46 +07:00 committed by Jordi Boggiano
parent ff61ecd484
commit 8858b27ced
2 changed files with 24 additions and 0 deletions

View File

@ -156,6 +156,8 @@ class ZipDownloader extends ArchiveDownloader
} else { } else {
$processError = new \UnexpectedValueException(rtrim($this->getErrorMessage($retval, $file)."\n"), $retval); $processError = new \UnexpectedValueException(rtrim($this->getErrorMessage($retval, $file)."\n"), $retval);
} }
} catch (\ErrorException $ex) {
$processError = new \ErrorException('Archive may contain identical directory or file name with different capitalization (fails on case insensitive filesystems)');
} catch (\Exception $e) { } catch (\Exception $e) {
$processError = $e; $processError = $e;
} }

View File

@ -127,6 +127,28 @@ class ZipDownloaderTest extends TestCase
$downloader->extract('testfile.zip', 'vendor/dir'); $downloader->extract('testfile.zip', 'vendor/dir');
} }
/**
* @expectedException \ErrorException
* @expectedExceptionMessage Archive may contain identical directory or file name with different capitalization (fails on case insensitive filesystems)
*/
public function testZipArchiveExtractOnlyFailed()
{
$this->setPrivateProperty('hasSystemUnzip', false);
$this->setPrivateProperty('hasZipArchive', true);
$downloader = new MockedZipDownloader($this->io, $this->config);
$zipArchive = $this->getMock('ZipArchive');
$zipArchive->expects($this->at(0))
->method('open')
->will($this->returnValue(true));
$zipArchive->expects($this->at(1))
->method('extractTo')
->will($this->throwException(new \ErrorException('Not a directory')));
$this->setPrivateProperty('zipArchiveObject', $zipArchive, $downloader);
$downloader->extract('testfile.zip', 'vendor/dir');
}
/** /**
* @group only * @group only
*/ */