forked from phpbb/phpbb
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ticket/11045] Added unit tests for the compress class
PHPBB3-11045
- Loading branch information
Showing
11 changed files
with
161 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
<?php | ||
/** | ||
* | ||
* @package testing | ||
* @copyright (c) 2012 phpBB Group | ||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 | ||
* | ||
*/ | ||
|
||
require_once __DIR__ . '/../../phpBB/includes/functions.php'; | ||
require_once __DIR__ . '/../../phpBB/includes/functions_admin.php'; | ||
require_once __DIR__ . '/../../phpBB/includes/functions_compress.php'; | ||
|
||
class phpbb_compress_test extends phpbb_test_case | ||
{ | ||
const EXTRACT_DIR = '/extract/'; | ||
const ARCHIVE_DIR = '/archive/'; | ||
|
||
private $path; | ||
protected $filelist = array( | ||
'1.txt', | ||
'dir/2.txt', | ||
'dir/3.txt', | ||
'dir/subdir/4.txt', | ||
); | ||
|
||
protected function setUp() | ||
{ | ||
// Required for compress::add_file | ||
global $phpbb_root_path; | ||
$phpbb_root_path = ''; | ||
|
||
$this->path = __DIR__ . '/fixtures/'; | ||
$compress = new compress(); | ||
|
||
if (sizeof($compress->methods()) < 4) | ||
{ | ||
$this->markTestSkipped('PHP needs to be compiled with --with-zlib and --with-bz2 in order to run these tests'); | ||
} | ||
} | ||
|
||
protected function tearDown() | ||
{ | ||
foreach (array(__DIR__ . self::EXTRACT_DIR, __DIR__ . self::ARCHIVE_DIR) as $dir) { | ||
$this->clear_dir($dir); | ||
} | ||
} | ||
|
||
protected function clear_dir($dir) | ||
{ | ||
$iterator = new DirectoryIterator($dir); | ||
foreach ($iterator as $fileinfo) | ||
{ | ||
$name = $fileinfo->getFilename(); | ||
$path = $fileinfo->getPathname(); | ||
|
||
if ($name[0] !== '.') | ||
{ | ||
if ($fileinfo->isDir()) | ||
{ | ||
$this->clear_dir($path); | ||
rmdir($path); | ||
} | ||
else | ||
{ | ||
unlink($path); | ||
} | ||
} | ||
} | ||
} | ||
|
||
protected function archive_files($compress) | ||
{ | ||
$compress->add_file($this->path . '1.txt', $this->path); | ||
$compress->add_file( | ||
'tests/compress/fixtures/dir/', | ||
'tests/compress/fixtures/', | ||
'', | ||
// The comma here is not an error, this is a comma-separated list | ||
'subdir/4.txt,3.txt' | ||
); | ||
$compress->add_custom_file($this->path . 'dir/3.txt', 'dir/3.txt'); | ||
$compress->add_data(file_get_contents($this->path . 'dir/subdir/4.txt'), 'dir/subdir/4.txt'); | ||
} | ||
|
||
protected function valid_extraction() | ||
{ | ||
foreach ($this->filelist as $filename) | ||
{ | ||
$path = __DIR__ . self::EXTRACT_DIR . $filename; | ||
$this->assertTrue(file_exists($path)); | ||
|
||
// Check the file's contents is correct | ||
$this->assertEquals(basename($filename, '.txt') . "\n", file_get_contents($path)); | ||
} | ||
} | ||
|
||
public function tar_archive_list() | ||
{ | ||
return array( | ||
array('archive.tar', '.tar'), | ||
array('archive.tar.gz', '.tar.gz'), | ||
array('archive.tar.bz2', '.tar.bz2'), | ||
); | ||
} | ||
|
||
/** | ||
* @dataProvider tar_archive_list | ||
*/ | ||
public function test_extract_tar($filename, $type) | ||
{ | ||
$compress = new compress_tar('r', $this->path . $filename); | ||
$compress->extract('tests/compress/' . self::EXTRACT_DIR); | ||
$this->valid_extraction(); | ||
} | ||
|
||
public function test_extract_zip() | ||
{ | ||
$compress = new compress_zip('r', $this->path . 'archive.zip'); | ||
$compress->extract('tests/compress/' . self::EXTRACT_DIR); | ||
$this->valid_extraction(); | ||
} | ||
|
||
/** | ||
* @depends test_extract_tar | ||
* @dataProvider tar_archive_list | ||
*/ | ||
public function test_compress_tar($filename, $type) | ||
{ | ||
$tar = __DIR__ . self::ARCHIVE_DIR . $filename; | ||
$compress = new compress_tar('w', $tar); | ||
$this->archive_files($compress); | ||
$compress->close(); | ||
$this->assertTrue(file_exists($tar)); | ||
|
||
$compress->mode = 'r'; | ||
$compress->open(); | ||
$compress->extract('tests/compress/' . self::EXTRACT_DIR); | ||
$this->valid_extraction(); | ||
} | ||
|
||
/** | ||
* @depends test_extract_zip | ||
*/ | ||
public function test_compress_zip() | ||
{ | ||
$zip = __DIR__ . self::ARCHIVE_DIR . 'archive.zip'; | ||
$compress = new compress_zip('w', $zip); | ||
$this->archive_files($compress); | ||
$compress->close(); | ||
$this->assertTrue(file_exists($zip)); | ||
|
||
$compress = new compress_zip('r', $zip); | ||
$compress->extract('tests/compress/' . self::EXTRACT_DIR); | ||
$this->valid_extraction(); | ||
} | ||
} |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
1 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
4 |