MDL-48494 admin: Fail validation of plugins with no component declared

This commit is contained in:
David Mudrák 2015-08-06 15:59:40 +02:00
parent 98ea697349
commit 033761fe9b
9 changed files with 49 additions and 16 deletions

View file

@ -322,7 +322,11 @@ class tool_installaddon_validator {
$this->add_message(self::INFO, 'requiresmoodle', $this->versionphp['requires']);
}
if (isset($info['plugin->component'])) {
if (!isset($info['plugin->component'])) {
$this->add_message(self::ERROR, 'missingcomponent');
return false;
}
$this->versionphp['component'] = $info['plugin->component'];
list($reqtype, $reqname) = core_component::normalize_component($this->versionphp['component']);
if ($reqtype !== $this->assertions['plugintype']) {
@ -336,7 +340,6 @@ class tool_installaddon_validator {
return false;
}
$this->add_message(self::INFO, 'componentmatch', $this->versionphp['component']);
}
if (isset($info['plugin->maturity'])) {
$this->versionphp['maturity'] = $info['plugin->maturity'];

View file

@ -71,6 +71,9 @@ $string['validationmsg_filestatus_info'] = 'Attempting to extract file {$a->file
$string['validationmsg_foundlangfile'] = 'Found language file';
$string['validationmsg_maturity'] = 'Declared maturity level';
$string['validationmsg_maturity_help'] = 'The plugin can declare its maturity level. If the maintainer considers the plugin stable, the declared maturity level will read MATURITY_STABLE. All other maturity levels (such as alpha or beta) should be considered unstable and a warning is raised.';
$string['validationmsg_missingcomponent'] = 'Plugin does not declare its component name';
$string['validationmsg_missingcomponent_help'] = 'All plugins must provide their full component name via the `$plugin->component` declaration in the version.php file.';
$string['validationmsg_missingcomponent_link'] = 'Development:version.php';
$string['validationmsg_missingexpectedlangenfile'] = 'English language file name mismatch';
$string['validationmsg_missingexpectedlangenfile_info'] = 'The given plugin type is missing the expected English language file {$a}.';
$string['validationmsg_missinglangenfile'] = 'No English language file found';

View file

@ -0,0 +1,3 @@
<?php
$string['pluginname'] = 'This is a plugin with $plugin->component missing in its version.php';

View file

@ -0,0 +1,5 @@
<?php
$plugin->version = 2015080600;
$plugin->release = 'B.A.Z. Auth fake plugin';
//$plugin->component is missing here so the validation must fail.

View file

@ -1,3 +1,4 @@
<?php
$plugin->version = 2014122455;
$plugin->component = 'mod_bah';

View file

@ -0,0 +1,3 @@
<?php
$string['pluginname'] = 'This would be valid filename for module, not a block';

View file

@ -0,0 +1,4 @@
<?php
$plugin->version = 2014122455;
$plugin->component = 'block_bah';

View file

@ -145,6 +145,17 @@ class tool_installaddon_validator_testcase extends basic_testcase {
$this->assertFalse($validator->execute());
$this->assertTrue($this->has_message($validator->get_messages(), $validator::ERROR, 'versionphpsyntax', '$module'));
$validator = testable_tool_installaddon_validator::instance($fixtures.'/nocomponent', array(
'baz/' => true,
'baz/version.php' => true,
'baz/lang/' => true,
'baz/lang/en/' => true,
'baz/lang/en/auth_baz.php' => true));
$validator->assert_plugin_type('auth');
$validator->assert_moodle_version(0);
$this->assertFalse($validator->execute());
$this->assertTrue($this->has_message($validator->get_messages(), $validator::ERROR, 'missingcomponent'));
$validator = testable_tool_installaddon_validator::instance($fixtures.'/plugindir', array(
'foobar/' => true,
'foobar/version.php' => true,
@ -216,7 +227,7 @@ class tool_installaddon_validator_testcase extends basic_testcase {
$this->assertTrue($this->has_message($validator->get_messages(), $validator::WARNING, 'multiplelangenfiles'));
$this->assertTrue(is_null($validator->get_language_file_name()));
$validator = testable_tool_installaddon_validator::instance($fixtures.'/nolang', array(
$validator = testable_tool_installaddon_validator::instance($fixtures.'/wronglang', array(
'bah/' => true,
'bah/version.php' => true,
'bah/lang/' => true,

View file

@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'tool_installaddon';
$plugin->version = 2015051100;
$plugin->version = 2015080601;
$plugin->requires = 2015050500;
$plugin->maturity = MATURITY_STABLE;