Skip to content
Extraits de code Groupes Projets
Valider 51e34b5d rédigé par Thomas Steur's avatar Thomas Steur Validation de Matthieu Aubry
Parcourir les fichiers

Automatically load required plugins during test (#11675)

* Automatically load required plugins during test

When a plugin requires another plugin in `plugin.json`, this will make sure to load the required plugin as well (if it exists in filesystem) when running the tests.

* Load plugin json manually without metadata loader as container is not created yet

* only load plugin.json if it exists
parent defc5469
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -213,21 +213,46 @@ class TestingEnvironmentManipulator implements EnvironmentManipulator ...@@ -213,21 +213,46 @@ class TestingEnvironmentManipulator implements EnvironmentManipulator
Plugin::getPluginNameFromNamespace(get_called_class()) Plugin::getPluginNameFromNamespace(get_called_class())
) )
); );
foreach ($extraPlugins as $pluginName) { foreach ($extraPlugins as $pluginName) {
if (empty($pluginName)) { if (empty($pluginName)) {
continue; continue;
} }
if (in_array($pluginName, $plugins)) { $plugins = $this->getPluginAndRequiredPlugins($pluginName, $plugins);
continue; }
return $plugins;
}
private function getPluginAndRequiredPlugins($pluginName, $plugins)
{
$pluginJsonPath = $this->makePathToPluginJson($pluginName);
if (file_exists($pluginJsonPath)) {
$pluginJson = json_decode(trim(file_get_contents($pluginJsonPath)), true);
if (!empty($pluginJson['require'])) {
foreach ($pluginJson['require'] as $possiblePluginName => $requiredVersion) {
if (file_exists($this->makePathToPluginJson($possiblePluginName))) {
$plugins = $this->getPluginAndRequiredPlugins($possiblePluginName, $plugins);
}
}
} }
}
if (!in_array($pluginName, $plugins)) {
$plugins[] = $pluginName; $plugins[] = $pluginName;
} }
return $plugins; return $plugins;
} }
private function makePathToPluginJson($pluginName)
{
return Plugin\Manager::getPluginsDirectory() . $pluginName . '/' . Plugin\MetadataLoader::PLUGIN_JSON_FILENAME;
}
private function classExists($klass) private function classExists($klass)
{ {
if (class_exists($klass)) { if (class_exists($klass)) {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter