Author: Shivam Mathur (shivammathur) Date: 2025-01-28T05:09:43+05:30 Commit: https://github.com/php/web-downloads/commit/d9cd4bbe177b064f15ab6b97c04c26290258e83c Raw diff: https://github.com/php/web-downloads/commit/d9cd4bbe177b064f15ab6b97c04c26290258e83c.diff
Refactor to provide builds directory for option in commands Changed paths: M src/Console/Command/PeclCommand.php M src/Console/Command/PhpCommand.php M src/Console/Command/WinlibsCommand.php M tests/Console/Command/PeclCommandTest.php M tests/Console/Command/PhpCommandTest.php M tests/Console/Command/WinlibsCommandTest.php Diff: diff --git a/src/Console/Command/PeclCommand.php b/src/Console/Command/PeclCommand.php index 53fb0e3..e02248f 100644 --- a/src/Console/Command/PeclCommand.php +++ b/src/Console/Command/PeclCommand.php @@ -8,7 +8,7 @@ class PeclCommand extends Command { - protected string $signature = 'pecl:add --base-directory='; + protected string $signature = 'pecl:add --base-directory= --builds-directory='; protected string $description = 'Add pecl extensions'; @@ -20,7 +20,12 @@ public function handle(): int throw new Exception('Base directory is required'); } - $zips_directory = getenv('BUILDS_DIRECTORY') . '/pecl'; + $buildsDirectory = $this->getOption('builds-directory'); + if (!$buildsDirectory) { + throw new Exception('Build directory is required'); + } + + $zips_directory = $buildsDirectory . '/pecl'; if(!is_dir($zips_directory)) { return Command::SUCCESS; } diff --git a/src/Console/Command/PhpCommand.php b/src/Console/Command/PhpCommand.php index 596b3dc..6ed8a42 100644 --- a/src/Console/Command/PhpCommand.php +++ b/src/Console/Command/PhpCommand.php @@ -10,7 +10,7 @@ class PhpCommand extends Command { - protected string $signature = 'php:add --base-directory='; + protected string $signature = 'php:add --base-directory= --builds-directory='; protected string $description = 'Add php builds'; protected ?string $baseDirectory = null; @@ -23,7 +23,12 @@ public function handle(): int throw new Exception('Base directory is required'); } - $zips_directory = getenv('BUILDS_DIRECTORY') . '/php'; + $buildsDirectory = $this->getOption('builds-directory'); + if (!$buildsDirectory) { + throw new Exception('Build directory is required'); + } + + $zips_directory = $buildsDirectory . '/php'; if(!is_dir($zips_directory)) { return Command::SUCCESS; } diff --git a/src/Console/Command/WinlibsCommand.php b/src/Console/Command/WinlibsCommand.php index ebec0f4..3aeb89b 100644 --- a/src/Console/Command/WinlibsCommand.php +++ b/src/Console/Command/WinlibsCommand.php @@ -8,7 +8,7 @@ class WinlibsCommand extends Command { - protected string $signature = 'winlibs:add --base-directory='; + protected string $signature = 'winlibs:add --base-directory= --builds-directory='; protected string $description = 'Add winlibs dependencies'; protected ?string $baseDirectory = null; @@ -21,7 +21,12 @@ public function handle(): int throw new Exception('Base directory is required'); } - $buildDirectories = glob($this->baseDirectory . '/winlibs/*', GLOB_ONLYDIR); + $buildsDirectory = $this->getOption('builds-directory'); + if (!$buildsDirectory) { + throw new Exception('Build directory is required'); + } + + $buildDirectories = glob($buildsDirectory . '/winlibs/*', GLOB_ONLYDIR); // We lock the Directories we are working on // so that we don't process them again if the command is run again diff --git a/tests/Console/Command/PeclCommandTest.php b/tests/Console/Command/PeclCommandTest.php index 6861c9e..0166c55 100644 --- a/tests/Console/Command/PeclCommandTest.php +++ b/tests/Console/Command/PeclCommandTest.php @@ -22,8 +22,6 @@ protected function setUp(): void mkdir($this->baseDirectory, 0755, true); mkdir($this->buildsDirectory . '/pecl', 0755, true); - putenv("BUILDS_DIRECTORY=$this->buildsDirectory"); - $zipPath = $this->buildsDirectory . '/pecl/test.zip'; $zip = new ZipArchive(); if ($zip->open($zipPath, ZipArchive::CREATE) === TRUE) { @@ -44,6 +42,7 @@ public function testPeclAddSuccessfullyExtractsZip(): void { $command = new PeclCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); $result = $command->handle(); $this->assertEquals(0, $result); @@ -66,6 +65,7 @@ public function testPeclAddFailsWithoutBaseDirectory(): void (new Helpers)->rmdirr($this->buildsDirectory . '/pecl'); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); $result = $command->handle(); $this->assertEquals(0, $result); } @@ -77,6 +77,7 @@ public function testPeclAddFailsWithBrokenZip(): void $command = new PeclCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); ob_start(); $result = $command->handle(); $output = ob_get_clean(); @@ -90,6 +91,7 @@ public function testPeclAddFailsToExtractBuild(): void mkdir($destinationDirectory, 0555, true); $command = new PeclCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); ob_start(); $result = @$command->handle(); $output = ob_get_clean(); diff --git a/tests/Console/Command/PhpCommandTest.php b/tests/Console/Command/PhpCommandTest.php index 30808ce..3ebb1ad 100644 --- a/tests/Console/Command/PhpCommandTest.php +++ b/tests/Console/Command/PhpCommandTest.php @@ -17,14 +17,12 @@ protected function setUp(): void parent::setUp(); // Set up temporary directories - $this->baseDirectory = sys_get_temp_dir() . '/php_command_base'; + $this->baseDirectory = sys_get_temp_dir() . '/php_test_base'; $this->buildsDirectory = sys_get_temp_dir() . '/builds'; mkdir($this->baseDirectory . '/releases', 0755, true); mkdir($this->baseDirectory . '/qa', 0755, true); mkdir($this->buildsDirectory . '/php', 0755, true); - - putenv("BUILDS_DIRECTORY=$this->buildsDirectory"); } protected function tearDown(): void @@ -98,6 +96,7 @@ public function testCommandHandlesSuccessfulExecution(array $phpZips): void { $command = new PhpCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); $this->stageBuilds($phpZips, $this->buildsDirectory . '/php/test.zip'); @@ -113,6 +112,7 @@ public function testCommandHandlerWithMissingTestPackZip(): void { $command = new PhpCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); $this->stageBuilds(['php-8.4.0-dev-Win32-vs17-x64.zip'], $this->buildsDirectory . '/php/test.zip'); ob_start(); @@ -138,6 +138,7 @@ public function testFailsToOpenZip(): void file_put_contents($zipPath, "invalid zip content"); $command = new PhpCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); ob_start(); $result = $command->handle(); ob_get_clean(); @@ -148,6 +149,7 @@ public function testCleanupAfterCommand(): void { $command = new PhpCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); $command->handle(); $tempDirectory = "/tmp/php-*"; $this->assertEmpty(glob($tempDirectory)); diff --git a/tests/Console/Command/WinlibsCommandTest.php b/tests/Console/Command/WinlibsCommandTest.php index 1d105f4..b966752 100644 --- a/tests/Console/Command/WinlibsCommandTest.php +++ b/tests/Console/Command/WinlibsCommandTest.php @@ -17,17 +17,18 @@ class WinlibsCommandTest extends TestCase protected function setUp(): void { parent::setUp(); - $this->baseDirectory = sys_get_temp_dir() . '/winlibs_test'; + $this->baseDirectory = sys_get_temp_dir() . '/winlibs_test_base'; + $this->buildsDirectory = sys_get_temp_dir() . '/builds'; mkdir($this->baseDirectory, 0755, true); - putenv("BASE_DIRECTORY=$this->baseDirectory"); - $this->winlibsDirectory = $this->baseDirectory . '/winlibs'; + $this->winlibsDirectory = $this->buildsDirectory . '/winlibs'; } protected function tearDown(): void { parent::tearDown(); (new Helpers)->rmdirr($this->baseDirectory); + (new Helpers)->rmdirr($this->buildsDirectory); } #[DataProvider('versionProvider')] @@ -56,6 +57,7 @@ public function testSuccessfulFileOperations($phpVersion, $vsVersion, $arch, $st $command = new WinlibsCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); $result = $command->handle(); @@ -92,6 +94,7 @@ public function testSuccessfulFileOperationsWithExistingSeriesFile($phpVersion, $command = new WinlibsCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); $result = $command->handle(); @@ -128,6 +131,7 @@ public function testSuccessfulFileOperationsWithExistingOldLibraryInSeriesFile($ $command = new WinlibsCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); $result = $command->handle(); @@ -157,12 +161,12 @@ public function testCommandHandlesMissingBaseDirectory(): void public function testHandlesCorruptDataFile(): void { - $this->winlibsDirectory = $this->baseDirectory . '/winlibs/lib'; - mkdir($this->winlibsDirectory, 0755, true); - file_put_contents($this->winlibsDirectory . '/data.json', '{corrupt json'); + mkdir($this->winlibsDirectory . '/lib', 0755, true); + file_put_contents($this->winlibsDirectory . '/lib/data.json', '{corrupt json'); $command = new WinlibsCommand(); $command->setOption('base-directory', $this->baseDirectory); + $command->setOption('builds-directory', $this->buildsDirectory); ob_start(); $result = $command->handle(); $output = ob_get_clean();