Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4114542
ZipDirectoryReaderTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
ZipDirectoryReaderTest.php
View Options
<?php
/**
* @covers \ZipDirectoryReader
*/
class
ZipDirectoryReaderTest
extends
MediaWikiIntegrationTestCase
{
private
const
ZIP_DIR
=
__DIR__
.
'/../../data/zip'
;
/** @var array[] */
protected
$entries
;
public
function
zipCallback
(
$entry
)
{
$this
->
entries
[]
=
$entry
;
}
public
function
readZipAssertError
(
$file
,
$error
,
$assertMessage
)
{
$this
->
entries
=
[];
$status
=
ZipDirectoryReader
::
read
(
self
::
ZIP_DIR
.
"/$file"
,
[
$this
,
'zipCallback'
]
);
$this
->
assertStatusError
(
$error
,
$status
,
$assertMessage
);
}
public
function
readZipAssertSuccess
(
$file
,
$assertMessage
)
{
$this
->
entries
=
[];
$status
=
ZipDirectoryReader
::
read
(
self
::
ZIP_DIR
.
"/$file"
,
[
$this
,
'zipCallback'
]
);
$this
->
assertStatusOK
(
$status
,
$assertMessage
);
}
public
function
testEmpty
()
{
$this
->
readZipAssertSuccess
(
'empty.zip'
,
'Empty zip'
);
}
public
function
testMultiDisk0
()
{
$this
->
readZipAssertError
(
'split.zip'
,
'zip-unsupported'
,
'Split zip error'
);
}
public
function
testNoSignature
()
{
$this
->
readZipAssertError
(
'nosig.zip'
,
'zip-wrong-format'
,
'No signature should give "wrong format" error'
);
}
public
function
testSimple
()
{
$this
->
readZipAssertSuccess
(
'class.zip'
,
'Simple ZIP'
);
$this
->
assertEquals
(
[
[
'name'
=>
'Class.class'
,
'mtime'
=>
'20010115000000'
,
'size'
=>
1
,
]
],
$this
->
entries
);
}
public
function
testBadCentralEntrySignature
()
{
$this
->
readZipAssertError
(
'wrong-central-entry-sig.zip'
,
'zip-bad'
,
'Bad central entry error'
);
}
public
function
testTrailingBytes
()
{
// Due to T40432 this is now zip-wrong-format instead of zip-bad
$this
->
readZipAssertError
(
'trail.zip'
,
'zip-wrong-format'
,
'Trailing bytes error'
);
}
public
function
testWrongCDStart
()
{
$this
->
readZipAssertError
(
'wrong-cd-start-disk.zip'
,
'zip-unsupported'
,
'Wrong CD start disk error'
);
}
public
function
testCentralDirectoryGap
()
{
$this
->
readZipAssertError
(
'cd-gap.zip'
,
'zip-bad'
,
'CD gap error'
);
}
public
function
testCentralDirectoryTruncated
()
{
$this
->
readZipAssertError
(
'cd-truncated.zip'
,
'zip-bad'
,
'CD truncated error (should hit unpack() overrun)'
);
}
public
function
testLooksLikeZip64
()
{
$this
->
readZipAssertError
(
'looks-like-zip64.zip'
,
'zip-unsupported'
,
'A file which looks like ZIP64 but isn
\'
t, should give error'
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Wed, Aug 19, 00:14 (5 d, 6 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
60/60/c12268eb3e041817ed2dc29566c7
Default Alt Text
ZipDirectoryReaderTest.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment