mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-19 15:22:17 +02:00
Make ItopCustomDatamodelTestCase work with modules in production-modules
This commit is contained in:
@@ -13,6 +13,7 @@ use RecursiveDirectoryIterator;
|
|||||||
use RecursiveIteratorIterator;
|
use RecursiveIteratorIterator;
|
||||||
use ReflectionClass;
|
use ReflectionClass;
|
||||||
use RunTimeEnvironment;
|
use RunTimeEnvironment;
|
||||||
|
use SetupUtils;
|
||||||
use utils;
|
use utils;
|
||||||
|
|
||||||
|
|
||||||
@@ -47,55 +48,38 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment
|
|||||||
return $this->sFinalEnv;
|
return $this->sFinalEnv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function CompileFrom($sSourceEnv, $bUseSymLinks = null)
|
||||||
|
{
|
||||||
|
$sDestModulesDir = APPROOT.'data/'.$this->sTargetEnv.'-modules/';
|
||||||
|
if (is_dir($sDestModulesDir)) {
|
||||||
|
SetupUtils::rrmdir($sDestModulesDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetupUtils::copydir(APPROOT.'/data/'.$sSourceEnv.'-modules', $sDestModulesDir, $bUseSymLinks);
|
||||||
|
|
||||||
|
parent::CompileFrom($sSourceEnv, $bUseSymLinks);
|
||||||
|
}
|
||||||
|
|
||||||
public function IsUpToDate()
|
public function IsUpToDate()
|
||||||
{
|
{
|
||||||
clearstatcache();
|
clearstatcache();
|
||||||
$aCustomDatamodelFiles = $this->GetCustomDatamodelFiles();
|
$fLastCompilationTime = filemtime(APPROOT.'env-'.$this->sFinalEnv);
|
||||||
$sDestDir = APPROOT.'env-'.$this->sFinalEnv;
|
|
||||||
if (! is_dir($sDestDir) && count($aCustomDatamodelFiles) > 0){
|
|
||||||
$this->PrintFiles($aCustomDatamodelFiles);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$fLastCompilationTime = filemtime($sDestDir);
|
|
||||||
if (false === $fLastCompilationTime){
|
|
||||||
echo "Issue when calling filemtime($sDestDir) \n";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "files in $sDestDir: ". var_export(glob("$sDestDir/*"), true) . "\n" ;
|
|
||||||
|
|
||||||
$sLastCompilationDate = date("Y-m-d H:i:s", $fLastCompilationTime);
|
|
||||||
echo "filemtime($sDestDir): $fLastCompilationTime " .$sLastCompilationDate." \n";
|
|
||||||
|
|
||||||
$aModifiedFiles = [];
|
$aModifiedFiles = [];
|
||||||
|
$this->FindFilesModifiedAfter($fLastCompilationTime, APPROOT.'datamodels/2.x', $aModifiedFiles);
|
||||||
foreach ($aCustomDatamodelFiles as $sCustomDatamodelFile) {
|
$this->FindFilesModifiedAfter($fLastCompilationTime, APPROOT.'extensions', $aModifiedFiles);
|
||||||
$iFilemtime = filemtime($sCustomDatamodelFile);
|
$this->FindFilesModifiedAfter($fLastCompilationTime, APPROOT.'data/production-modules', $aModifiedFiles);
|
||||||
if ($iFilemtime > $fLastCompilationTime) {
|
foreach ($this->GetCustomDatamodelFiles() as $sCustomDatamodelFile) {
|
||||||
|
if (filemtime($sCustomDatamodelFile) > $fLastCompilationTime) {
|
||||||
$aModifiedFiles[] = $sCustomDatamodelFile;
|
$aModifiedFiles[] = $sCustomDatamodelFile;
|
||||||
} else {
|
|
||||||
//nervous breakdown troubleshooting!
|
|
||||||
echo sprintf("%s:\nlast compilation: %s vs (mtime of current file) %s \n",
|
|
||||||
$sCustomDatamodelFile, $sLastCompilationDate, date("Y-m-d H:i:s", $iFilemtime));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count($aModifiedFiles) > 0) {
|
if (count($aModifiedFiles) > 0) {
|
||||||
$this->PrintFiles($aModifiedFiles);
|
echo "The following files have been modified after the last compilation:\n";
|
||||||
return false;
|
foreach ($aModifiedFiles as $sFile) {
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function PrintFiles(array $aFiles, string $sMsg = "The following files have been modified after the last compilation") : void
|
|
||||||
{
|
|
||||||
echo "$sMsg:\n";
|
|
||||||
foreach ($aFiles as $sFile) {
|
|
||||||
echo " - $sFile\n";
|
echo " - $sFile\n";
|
||||||
}
|
}
|
||||||
echo "\n";
|
}
|
||||||
|
return (count($aModifiedFiles) === 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -159,14 +143,12 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment
|
|||||||
if ($sClass === '') {
|
if ($sClass === '') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($sClass, $aLoadedTestClasses)) {
|
if (in_array($sClass, $aLoadedTestClasses)) {
|
||||||
|
echo "class $sClass already loaded somehow \n";
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$aLoadedTestClasses[]=$sClass;
|
$aLoadedTestClasses[]=$sClass;
|
||||||
require_once $sFile;
|
require_once $sFile;
|
||||||
|
|
||||||
$oReflectionClass = new ReflectionClass($sClass);
|
$oReflectionClass = new ReflectionClass($sClass);
|
||||||
if ($oReflectionClass->isAbstract()) {
|
if ($oReflectionClass->isAbstract()) {
|
||||||
continue;
|
continue;
|
||||||
@@ -190,7 +172,6 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->PrintFiles($this->aCustomDatamodelFiles, "Found XML delta files");
|
|
||||||
return $this->aCustomDatamodelFiles;
|
return $this->aCustomDatamodelFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user