diff --git a/src/Task/BuiltIn/Composer/DumpAutoloadTask.php b/src/Task/BuiltIn/Composer/DumpAutoloadTask.php index b778413..39e44da 100644 --- a/src/Task/BuiltIn/Composer/DumpAutoloadTask.php +++ b/src/Task/BuiltIn/Composer/DumpAutoloadTask.php @@ -43,10 +43,9 @@ class DumpAutoloadTask extends AbstractTask protected function getOptions() { - $userOptions = $this->runtime->getConfigOption('composer', []); $options = array_merge( ['path' => 'composer', 'flags' => '--optimize'], - (is_array($userOptions) ? $userOptions : []), + $this->runtime->getMergedEnvAndConfigOption('composer', [], []), $this->options ); diff --git a/src/Task/BuiltIn/Composer/InstallTask.php b/src/Task/BuiltIn/Composer/InstallTask.php index ce97361..5596864 100644 --- a/src/Task/BuiltIn/Composer/InstallTask.php +++ b/src/Task/BuiltIn/Composer/InstallTask.php @@ -43,10 +43,9 @@ class InstallTask extends AbstractTask protected function getOptions() { - $userOptions = $this->runtime->getConfigOption('composer', []); $options = array_merge( ['path' => 'composer', 'flags' => '--optimize-autoloader'], - (is_array($userOptions) ? $userOptions : []), + $this->runtime->getMergedEnvAndConfigOption('composer', [], []), $this->options ); diff --git a/tests/Command/BuiltIn/DeployCommandMiscTasksTest.php b/tests/Command/BuiltIn/DeployCommandMiscTasksTest.php index 4d5efd6..a4beb90 100644 --- a/tests/Command/BuiltIn/DeployCommandMiscTasksTest.php +++ b/tests/Command/BuiltIn/DeployCommandMiscTasksTest.php @@ -80,6 +80,36 @@ class DeployCommandMiscTasksTest extends TestCase $this->assertEquals(0, $tester->getStatusCode()); } + public function testComposerEnvFlags() + { + $application = new MageApplicationMockup(__DIR__ . '/../../Resources/composer-env.yml'); + + /** @var AbstractCommand $command */ + $command = $application->find('deploy'); + $this->assertTrue($command instanceof DeployCommand); + + $tester = new CommandTester($command); + $tester->execute(['command' => $command->getName(), 'environment' => 'test']); + + $ranCommands = $application->getRuntime()->getRanCommands(); + + $testCase = array( + 0 => '/usr/foobar/composer install --prefer-source', + 1 => '/usr/foobar/composer dump-autoload --no-scripts', + 2 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=./var/cache/* --exclude=./var/log/* --exclude=./web/app_dev.php ./ tester@testhost:/var/www/test', + ); + + // Check total of Executed Commands + $this->assertEquals(count($testCase), count($ranCommands)); + + // Check Generated Commands + foreach ($testCase as $index => $command) { + $this->assertEquals($command, $ranCommands[$index]); + } + + $this->assertEquals(0, $tester->getStatusCode()); + } + public function testInvalidTaskName() { $application = new MageApplicationMockup(__DIR__ . '/../../Resources/invalid-task.yml'); diff --git a/tests/Resources/composer-env.yml b/tests/Resources/composer-env.yml new file mode 100644 index 0000000..2421fdf --- /dev/null +++ b/tests/Resources/composer-env.yml @@ -0,0 +1,19 @@ +magephp: + log_dir: /tmp + composer: + path: /usr/bin/composer.phar + environments: + test: + composer: + path: /usr/foobar/composer + user: tester + host_path: /var/www/test + exclude: + - ./var/cache/* + - ./var/log/* + - ./web/app_dev.php + hosts: + - testhost + pre-deploy: + - composer/install: { flags: '--prefer-source' } + - composer/dump-autoload: { flags: '--no-scripts' }