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();

Reply via email to