mirror of
https://github.com/Combodo/iTop.git
synced 2026-08-01 19:38:19 +02:00
N°9722 - Setup - extension dependencies must be computed with installation choice change (#965)
* WIP compileFrom * WIP compileFrom * WIP * Refactor DataFeatureRemovalController to improve setup redirection and add logging for selected extensions and modules * Refactor DataFeatureRemovalController to streamline parameter handling for extension management * Refactor DataFeatureRemovalController and related classes for improved session management and cleanup processes * N°9722 - replace GetMFModulesToCompile API by GetAdditionalMFModulesBeforeFinalDeltaToCompile + fix test * N°9722 - Refacto * N°9722 - remove extensions effectively * N°9722 - After review * N°9722 - After review * N°9722 - Analyze installation before compilation in extension management * ✅ N°9722 - Refactor and unit tests * N°9722 - ✅ * N°9722 - ✅ * N°9722 - cleanup + geptileia PR feedback --------- Co-authored-by: odain <olivier.dain@combodo.com>
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
namespace Combodo\iTop\Test\UnitTest\Service;
|
||||
|
||||
use Combodo\iTop\Test\UnitTest\ItopCustomDatamodelTestCase;
|
||||
use Config;
|
||||
use DOMFormatException;
|
||||
use MFCoreModule;
|
||||
use RecursiveDirectoryIterator;
|
||||
@@ -57,17 +58,23 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment
|
||||
|
||||
SetupUtils::copydir(APPROOT.'/data/'.$sSourceEnv.'-modules', $sDestModulesDir, (true === $bUseSymLinks));
|
||||
|
||||
$aAddedExtensions = [];
|
||||
if ($this->bUseAdditionalFeatures) {
|
||||
foreach ($this->GetExtensionFoldersToAdd() as $sExtensionCode => $sFolderPath) {
|
||||
\SetupLog::Info("ExtensionFoldersToAdd: $sExtensionCode => $sFolderPath");
|
||||
$sFolderName = basename($sFolderPath);
|
||||
@mkdir($sDestModulesDir.DIRECTORY_SEPARATOR.$sFolderName);
|
||||
SetupUtils::copydir($sFolderPath, $sDestModulesDir.DIRECTORY_SEPARATOR.$sFolderName, (true === $bUseSymLinks));
|
||||
$aAddedExtensions[] = $sExtensionCode;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
parent::CompileFrom($sSourceEnv, $bUseSymLinks);
|
||||
$oConfig = new Config(utils::GetConfigFilePath($sSourceEnv));
|
||||
$this->InitExtensionMap($oConfig);
|
||||
$aSelectedExtensions = $this->GetExtensionMap()->GetSelectedExtensions($oConfig, $aAddedExtensions, []);
|
||||
$aSelectedModules = $this->GetModulesToLoadFromChoices($oConfig, $aSelectedExtensions);
|
||||
return $this->DoCompile(array_keys($aSelectedExtensions), [], $aSelectedModules, $bUseSymLinks ?? false);
|
||||
} catch (DOMFormatException $e) {
|
||||
$sFileName = $sSourceEnv.'.delta.xml';
|
||||
SetupLog::Error(__METHOD__, null, [$sFileName => @file_get_contents(APPROOT.'data/'.$sFileName)]);
|
||||
@@ -108,11 +115,10 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function GetMFModulesToCompile($sSourceEnv, $sSourceDir): array
|
||||
protected function GetAdditionalMFModulesBeforeFinalDeltaToCompile(string $sSourceEnv, array $aScannedModulesRootDirs): array
|
||||
{
|
||||
\SetupLog::Info(__METHOD__);
|
||||
$aRet = parent::GetMFModulesToCompile($sSourceEnv, $sSourceDir);
|
||||
|
||||
$aRet = [];
|
||||
if ($this->bUseDelta) {
|
||||
foreach ($this->GetCustomDatamodelFiles() as $sDeltaFile) {
|
||||
$sDeltaId = preg_replace('/[^\d\w]/', '', $sDeltaFile);
|
||||
@@ -214,8 +220,8 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment
|
||||
}
|
||||
}
|
||||
|
||||
$aExtensionsPaths = $oTestClassInstance->GetAdditionalFeaturePaths();
|
||||
$this->aAdditionExtensionFoldersByCode = array_merge($this->aAdditionExtensionFoldersByCode, $aExtensionsPaths);
|
||||
// Add additional extension paths
|
||||
$this->aAdditionExtensionFoldersByCode = array_merge($this->aAdditionExtensionFoldersByCode, $oTestClassInstance->GetAdditionalExtensionsPaths());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user