Author: Shivam Mathur (shivammathur)
Date: 2025-01-28T05:09:43+05:30
Commit: Refactor to provide builds directory for option in commands · php/web-downloads@d9cd4bb · GitHub
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();