mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 16:32:18 +02:00
Merge branch 'w45_MDL-42044_m26_zipaddon' of https://github.com/skodak/moodle
This commit is contained in:
commit
db6767ae47
@ -140,15 +140,32 @@ class tool_installaddon_installer {
|
||||
$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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -42,7 +42,7 @@ class tool_installaddon_installer_testcase extends advanced_testcase {
|
||||
$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']);
|
||||
@ -57,8 +57,8 @@ class tool_installaddon_installer_testcase extends advanced_testcase {
|
||||
|
||||
$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/']);
|
||||
|
@ -33,7 +33,7 @@ defined('MOODLE_INTERNAL') || die();
|
||||
* @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';
|
||||
@ -159,8 +159,8 @@ class tool_installaddon_validator_test extends basic_testcase {
|
||||
$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']);
|
||||
@ -279,8 +279,8 @@ class tool_installaddon_validator_test extends basic_testcase {
|
||||
$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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user