tempDir = sys_get_temp_dir() . '/maintenance_test_' . uniqid(); mkdir($this->tempDir . '/var', 0777, true); } protected function tearDown(): void { $this->removeDirectory($this->tempDir); } public function testExecuteOn() { $command = new MaintenanceCommand($this->tempDir); $application = new Application(); $application->addCommand($command); $commandTester = new CommandTester($application->find('app:maintenance')); $commandTester->execute(['status' => 'on']); $output = $commandTester->getDisplay(); $this->assertStringContainsString('Mode maintenance ACTIVÉ', $output); $this->assertFileExists($this->tempDir . '/var/.maintenance'); } public function testExecuteOff() { // Ensure file exists first touch($this->tempDir . '/var/.maintenance'); $command = new MaintenanceCommand($this->tempDir); $application = new Application(); $application->addCommand($command); $commandTester = new CommandTester($application->find('app:maintenance')); $commandTester->execute(['status' => 'off']); $output = $commandTester->getDisplay(); $this->assertStringContainsString('Mode maintenance DÉSACTIVÉ', $output); $this->assertFileDoesNotExist($this->tempDir . '/var/.maintenance'); } private function removeDirectory($dir) { if (!is_dir($dir)) return; $files = array_diff(scandir($dir), array('.','..')); foreach ($files as $file) { (is_dir("$dir/$file")) ? $this->removeDirectory("$dir/$file") : unlink("$dir/$file"); } rmdir($dir); } }