Skip to content

Commit

Permalink
Merge branch 'w45_MDL-42044_m26_zipaddon' of https://github.com/skoda…
Browse files Browse the repository at this point in the history
  • Loading branch information
danpoltawski committed Nov 4, 2013
2 parents 4bbacb8 + 4cf944c commit db6767a
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 15 deletions.
31 changes: 24 additions & 7 deletions admin/tool/installaddon/classes/installer.php
Expand Up @@ -140,15 +140,32 @@ public function extract_installfromzip_file($zipfilepath, $targetdir, $rootdir =
$fp = get_file_packer('application/zip');
$files = $fp->extract_to_pathname($zipfilepath, $targetdir);

if ($files) {
if (!empty($rootdir)) {
$files = $this->rename_extracted_rootdir($targetdir, $rootdir, $files);
}
return $files;

} else {
if (!$files) {
return array();
}

if (!empty($rootdir)) {
$files = $this->rename_extracted_rootdir($targetdir, $rootdir, $files);
}

// Sometimes zip may not contain all parent directories, add them to make it consistent.
foreach ($files as $path => $status) {
if ($status !== true) {
continue;
}
$parts = explode('/', trim($path, '/'));
while (array_pop($parts)) {
if (empty($parts)) {
break;
}
$dir = implode('/', $parts).'/';
if (!isset($files[$dir])) {
$files[$dir] = true;
}
}
}

return $files;
}

/**
Expand Down
6 changes: 3 additions & 3 deletions admin/tool/installaddon/tests/installer_test.php
Expand Up @@ -42,7 +42,7 @@ public function test_get_addons_repository_url() {
$this->assertEquals(1, preg_match('~^site=(.+)$~', $query, $matches));
$site = rawurldecode($matches[1]);
$site = json_decode(base64_decode($site), true);
$this->assertEquals('array', gettype($site));
$this->assertInternalType('array', $site);
$this->assertEquals(3, count($site));
$this->assertSame('Nasty site', $site['fullname']);
$this->assertSame('file:///etc/passwd', $site['url']);
Expand All @@ -57,8 +57,8 @@ public function test_extract_installfromzip_file() {

$installer = tool_installaddon_installer::instance();
$files = $installer->extract_installfromzip_file($sourcedir.'/testinvalidroot.zip', $contentsdir, 'fixed_root');
$this->assertEquals('array', gettype($files));
$this->assertEquals(4, count($files));
$this->assertInternalType('array', $files);
$this->assertCount(4, $files);
$this->assertSame(true, $files['fixed_root/']);
$this->assertSame(true, $files['fixed_root/lang/']);
$this->assertSame(true, $files['fixed_root/lang/en/']);
Expand Down
10 changes: 5 additions & 5 deletions admin/tool/installaddon/tests/validator_test.php
Expand Up @@ -33,7 +33,7 @@
* @copyright 2013 David Mudrak <david@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class tool_installaddon_validator_test extends basic_testcase {
class tool_installaddon_validator_testcase extends basic_testcase {

public function test_validate_files_layout() {
$fixtures = dirname(__FILE__).'/fixtures';
Expand Down Expand Up @@ -159,8 +159,8 @@ public function test_validate_version_php() {
$this->assertEquals('foobar', $validator->get_rootdir());
$this->assertTrue($this->has_message($validator->get_messages(), $validator::INFO, 'rootdir', 'foobar'));
$versionphpinfo = $validator->get_versionphp_info();
$this->assertEquals('array', gettype($versionphpinfo));
$this->assertEquals(4, count($versionphpinfo));
$this->assertInternalType('array', $versionphpinfo);
$this->assertCount(4, $versionphpinfo);
$this->assertEquals(2013031900, $versionphpinfo['version']);
$this->assertEquals(2013031200, $versionphpinfo['requires']);
$this->assertEquals('local_foobar', $versionphpinfo['component']);
Expand Down Expand Up @@ -279,8 +279,8 @@ public function test_parse_version_php() {
$this->assertEquals('testable_tool_installaddon_validator', get_class($validator));

$info = $validator->testable_parse_version_php($fixtures.'/version1.php');
$this->assertEquals('array', gettype($info));
$this->assertEquals(7, count($info));
$this->assertInternalType('array', $info);
$this->assertCount(7, $info);
$this->assertEquals('block_foobar', $info['plugin->component']); // Later in the file.
$this->assertEquals('2013010100', $info['plugin->version']); // Numeric wins over strings.
$this->assertEquals('2012122401', $info['plugin->requires']); // Commented.
Expand Down

0 comments on commit db6767a

Please sign in to comment.