List explicitely the modules when finding inconsistencies in installation.xml

This commit is contained in:
Romain Quetiez
2024-06-04 21:56:03 +02:00
parent f568aaf732
commit ecd8890c0b

View File

@@ -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)))
{