From eae54df7dc3c47bcf126c225b1f168a6a71fa52b Mon Sep 17 00:00:00 2001 From: odain Date: Mon, 17 Aug 2026 12:28:11 +0200 Subject: [PATCH] =?UTF-8?q?=20N=C2=B09935=20-=20Disable=20data=20compatibi?= =?UTF-8?q?lity=20check=20when=20env-production=20empty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup/sequencers/DataAuditSequencer.php | 6 ++- .../sequencers/DataAuditSequencerTest.php | 42 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/setup/sequencers/DataAuditSequencer.php b/setup/sequencers/DataAuditSequencer.php index 9abed8272..c79a865da 100644 --- a/setup/sequencers/DataAuditSequencer.php +++ b/setup/sequencers/DataAuditSequencer.php @@ -118,7 +118,11 @@ class DataAuditSequencer extends StepSequencer } $sFinalEnvDir = APPROOT.'env-'.$this->oRunTimeEnvironment->GetFinalEnv(); - return is_dir($sFinalEnvDir); + if (! is_dir($sFinalEnvDir)) { + return false; + } + + return count(glob($sFinalEnvDir."/**")) > 0; } public function GetStepNames(): array diff --git a/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php b/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php index e50c3126a..311533bfc 100644 --- a/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php +++ b/tests/php-unit-tests/unitary-tests/setup/sequencers/DataAuditSequencerTest.php @@ -376,6 +376,48 @@ class DataAuditSequencerTest extends ItopTestCase self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); } + public function testIsDataAuditRequired_NoAuditWhenEnvProductionEmpty() + { + $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL]); + $oRunTimeEnvironment->expects($this->once())->method("GetFinalEnv")->willReturn("production-gabuzomeu"); + + $sFolder = APPROOT.'env-production-gabuzomeu'; + if (! is_dir($sFolder)) { + mkdir($sFolder); + $this->aFileToClean [] = $sFolder; + } + + $aAdditionalParams = [ + 'mode' => 'upgrade', + 'optional_steps' => ['setup-audit' => true ], + ]; + $oSequencer = new DataAuditSequencer($this->GivenParams($aAdditionalParams), $oRunTimeEnvironment); + self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); + } + + public function testIsDataAuditRequired_NoAuditWhenEnvProductionFolderIsEmpty() + { + $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class); + $oRunTimeEnvironment->expects($this->once())->method('GetApplicationVersion') + ->willReturn(['product_version' => ITOP_VERSION_FULL]); + $oRunTimeEnvironment->expects($this->once())->method("GetFinalEnv")->willReturn("production-gabuzomeu"); + + $sFolder = APPROOT.'env-production-gabuzomeu'; + if (! is_dir($sFolder)) { + mkdir($sFolder); + $this->aFileToClean [] = $sFolder; + } + + $aAdditionalParams = [ + 'mode' => 'upgrade', + 'optional_steps' => ['setup-audit' => true ], + ]; + $oSequencer = new DataAuditSequencer($this->GivenParams($aAdditionalParams), $oRunTimeEnvironment); + self::assertFalse($this->InvokeNonPublicMethod(DataAuditSequencer::class, "IsDataAuditRequired", $oSequencer)); + } + public function testIsDataAuditRequired_NoAuditTriggeredBecauseDisabled() { $oRunTimeEnvironment = $this->createMock(\RunTimeEnvironment::class);