diff --git a/tests/php-unit-tests/src/Service/UnitTestRunTimeEnvironment.php b/tests/php-unit-tests/src/Service/UnitTestRunTimeEnvironment.php index 9c4f50c4b8..60ab99547c 100644 --- a/tests/php-unit-tests/src/Service/UnitTestRunTimeEnvironment.php +++ b/tests/php-unit-tests/src/Service/UnitTestRunTimeEnvironment.php @@ -13,6 +13,7 @@ use RecursiveDirectoryIterator; use RecursiveIteratorIterator; use ReflectionClass; use RunTimeEnvironment; +use SetupUtils; use utils; @@ -47,55 +48,38 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment 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() { clearstatcache(); - $aCustomDatamodelFiles = $this->GetCustomDatamodelFiles(); - $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"; - + $fLastCompilationTime = filemtime(APPROOT.'env-'.$this->sFinalEnv); $aModifiedFiles = []; - - foreach ($aCustomDatamodelFiles as $sCustomDatamodelFile) { - $iFilemtime = filemtime($sCustomDatamodelFile); - if ($iFilemtime > $fLastCompilationTime) { + $this->FindFilesModifiedAfter($fLastCompilationTime, APPROOT.'datamodels/2.x', $aModifiedFiles); + $this->FindFilesModifiedAfter($fLastCompilationTime, APPROOT.'extensions', $aModifiedFiles); + $this->FindFilesModifiedAfter($fLastCompilationTime, APPROOT.'data/production-modules', $aModifiedFiles); + foreach ($this->GetCustomDatamodelFiles() as $sCustomDatamodelFile) { + if (filemtime($sCustomDatamodelFile) > $fLastCompilationTime) { $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) { - $this->PrintFiles($aModifiedFiles); - return false; - } - - 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 "The following files have been modified after the last compilation:\n"; + foreach ($aModifiedFiles as $sFile) { echo " - $sFile\n"; } - echo "\n"; + } + return (count($aModifiedFiles) === 0); } /** @@ -159,14 +143,12 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment if ($sClass === '') { continue; } - if (in_array($sClass, $aLoadedTestClasses)) { + echo "class $sClass already loaded somehow \n"; continue; } - $aLoadedTestClasses[]=$sClass; require_once $sFile; - $oReflectionClass = new ReflectionClass($sClass); if ($oReflectionClass->isAbstract()) { continue; @@ -190,7 +172,6 @@ class UnitTestRunTimeEnvironment extends RunTimeEnvironment } } - $this->PrintFiles($this->aCustomDatamodelFiles, "Found XML delta files"); return $this->aCustomDatamodelFiles; }