mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
MDL-48494 admin: Fail validation of plugins with no component declared
This commit is contained in:
parent
98ea697349
commit
033761fe9b
9 changed files with 49 additions and 16 deletions
|
@ -322,7 +322,11 @@ class tool_installaddon_validator {
|
||||||
$this->add_message(self::INFO, 'requiresmoodle', $this->versionphp['requires']);
|
$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'];
|
$this->versionphp['component'] = $info['plugin->component'];
|
||||||
list($reqtype, $reqname) = core_component::normalize_component($this->versionphp['component']);
|
list($reqtype, $reqname) = core_component::normalize_component($this->versionphp['component']);
|
||||||
if ($reqtype !== $this->assertions['plugintype']) {
|
if ($reqtype !== $this->assertions['plugintype']) {
|
||||||
|
@ -336,7 +340,6 @@ class tool_installaddon_validator {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->add_message(self::INFO, 'componentmatch', $this->versionphp['component']);
|
$this->add_message(self::INFO, 'componentmatch', $this->versionphp['component']);
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($info['plugin->maturity'])) {
|
if (isset($info['plugin->maturity'])) {
|
||||||
$this->versionphp['maturity'] = $info['plugin->maturity'];
|
$this->versionphp['maturity'] = $info['plugin->maturity'];
|
||||||
|
|
|
@ -71,6 +71,9 @@ $string['validationmsg_filestatus_info'] = 'Attempting to extract file {$a->file
|
||||||
$string['validationmsg_foundlangfile'] = 'Found language file';
|
$string['validationmsg_foundlangfile'] = 'Found language file';
|
||||||
$string['validationmsg_maturity'] = 'Declared maturity level';
|
$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_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'] = 'English language file name mismatch';
|
||||||
$string['validationmsg_missingexpectedlangenfile_info'] = 'The given plugin type is missing the expected English language file {$a}.';
|
$string['validationmsg_missingexpectedlangenfile_info'] = 'The given plugin type is missing the expected English language file {$a}.';
|
||||||
$string['validationmsg_missinglangenfile'] = 'No English language file found';
|
$string['validationmsg_missinglangenfile'] = 'No English language file found';
|
||||||
|
|
3
admin/tool/installaddon/tests/fixtures/nocomponent/baz/lang/en/auth_baz.php
vendored
Normal file
3
admin/tool/installaddon/tests/fixtures/nocomponent/baz/lang/en/auth_baz.php
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$string['pluginname'] = 'This is a plugin with $plugin->component missing in its version.php';
|
5
admin/tool/installaddon/tests/fixtures/nocomponent/baz/version.php
vendored
Normal file
5
admin/tool/installaddon/tests/fixtures/nocomponent/baz/version.php
vendored
Normal 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.
|
|
@ -1,3 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$plugin->version = 2014122455;
|
$plugin->version = 2014122455;
|
||||||
|
$plugin->component = 'mod_bah';
|
||||||
|
|
3
admin/tool/installaddon/tests/fixtures/wronglang/bah/lang/en/bah.php
vendored
Normal file
3
admin/tool/installaddon/tests/fixtures/wronglang/bah/lang/en/bah.php
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$string['pluginname'] = 'This would be valid filename for module, not a block';
|
4
admin/tool/installaddon/tests/fixtures/wronglang/bah/version.php
vendored
Normal file
4
admin/tool/installaddon/tests/fixtures/wronglang/bah/version.php
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$plugin->version = 2014122455;
|
||||||
|
$plugin->component = 'block_bah';
|
|
@ -145,6 +145,17 @@ class tool_installaddon_validator_testcase extends basic_testcase {
|
||||||
$this->assertFalse($validator->execute());
|
$this->assertFalse($validator->execute());
|
||||||
$this->assertTrue($this->has_message($validator->get_messages(), $validator::ERROR, 'versionphpsyntax', '$module'));
|
$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(
|
$validator = testable_tool_installaddon_validator::instance($fixtures.'/plugindir', array(
|
||||||
'foobar/' => true,
|
'foobar/' => true,
|
||||||
'foobar/version.php' => 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($this->has_message($validator->get_messages(), $validator::WARNING, 'multiplelangenfiles'));
|
||||||
$this->assertTrue(is_null($validator->get_language_file_name()));
|
$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/' => true,
|
||||||
'bah/version.php' => true,
|
'bah/version.php' => true,
|
||||||
'bah/lang/' => true,
|
'bah/lang/' => true,
|
||||||
|
|
|
@ -24,6 +24,6 @@
|
||||||
defined('MOODLE_INTERNAL') || die();
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
$plugin->component = 'tool_installaddon';
|
$plugin->component = 'tool_installaddon';
|
||||||
$plugin->version = 2015051100;
|
$plugin->version = 2015080601;
|
||||||
$plugin->requires = 2015050500;
|
$plugin->requires = 2015050500;
|
||||||
$plugin->maturity = MATURITY_STABLE;
|
$plugin->maturity = MATURITY_STABLE;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue