Make ItopCustomDatamodelTestCase work with modules in production-modules

This commit is contained in:
odain
2024-12-05 10:55:53 +01:00
parent c6d7bc545e
commit 087c60f2b3

View File

@@ -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;
} }