mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-21 17:48:43 +02:00
✅ List explicitely the modules when finding inconsistencies in installation.xml
This commit is contained in:
@@ -52,22 +52,27 @@ class iTopModuleXmlInstallationChecklistTest extends ItopTestCase
|
||||
}
|
||||
}
|
||||
|
||||
$aFilteredModulesFromDatamodels = $this->GetFilteredModulesFromDatamodels(APPROOT.'/datamodels');
|
||||
$this->assertCount(
|
||||
0,
|
||||
array_diff($aFilteredModulesFromDatamodels, array_intersect($aFilteredModulesFromDatamodels, $aDeclaredModules)),
|
||||
"{$sInstallationXmlPath} does not list all modules in /datamodels ! List of modules in installation.xml:\n ".var_export($aDeclaredModules, true)
|
||||
);
|
||||
$aIssues = [];
|
||||
|
||||
$aFilteredModulesFromDatamodels = $this->GetModulesNotAutoSelected(APPROOT.'/datamodels');
|
||||
$aMissingModules = array_diff($aFilteredModulesFromDatamodels, $aDeclaredModules);
|
||||
$sMissingModules = implode(', ', $aMissingModules);
|
||||
if (count($aMissingModules) > 0) {
|
||||
$aIssues[] = "Does not reference the following modules: {$sMissingModules}. Those modules are in the directory datamodels and they are not configured for automatic installation. They will never be installed in this package.";
|
||||
}
|
||||
|
||||
$aModulesFromDatamodels = $this->GetAllModules(APPROOT.'/datamodels');
|
||||
$this->assertCount(
|
||||
0,
|
||||
array_diff($aDeclaredModules, array_intersect($aDeclaredModules, $aModulesFromDatamodels)),
|
||||
"Not all modules are contained in {$sInstallationXmlPath}. List of modules in /datamodels:\n ".var_export($aModulesFromDatamodels, true)
|
||||
);
|
||||
$aMissingModules = array_diff($aDeclaredModules, $aModulesFromDatamodels);
|
||||
$sMissingModules = implode(', ', $aMissingModules);
|
||||
if (count($aMissingModules) > 0) {
|
||||
$aIssues[] = "References unknown modules: $sMissingModules. Those modules are not in the datamodels directory. This will prevent the installation of the package.";
|
||||
}
|
||||
if (count($aIssues) > 0) {
|
||||
$this->fail("Encountered ".count($aIssues)." issue(s) in {$sInstallationXmlPath}:\n- ".implode("\n- ", $aIssues));
|
||||
}
|
||||
}
|
||||
|
||||
public function GetFilteredModulesFromDatamodels($sFolder)
|
||||
public function GetModulesNotAutoSelected($sFolder)
|
||||
{
|
||||
$aExcludedModules = ['authent-external', 'authent-ldap'];
|
||||
$aModules = array();
|
||||
@@ -78,7 +83,7 @@ class iTopModuleXmlInstallationChecklistTest extends ItopTestCase
|
||||
if (is_dir($sPath))
|
||||
{
|
||||
/** @noinspection SlowArrayOperationsInLoopInspection */
|
||||
$aModules = array_merge($aModules, $this->GetFilteredModulesFromDatamodels($sPath));
|
||||
$aModules = array_merge($aModules, $this->GetModulesNotAutoSelected($sPath));
|
||||
}
|
||||
else if (preg_match("/module\..*\.php/", basename($sPath)))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user