From 705e96591629aff598a9fe76e3ee54c666f0d5e1 Mon Sep 17 00:00:00 2001 From: Helmut Hummel Date: Thu, 31 Mar 2016 15:54:12 +0200 Subject: [PATCH] [BUGFIX] Allow global options with prefix for defined tasks --- Tests/Unit/Domain/Service/TaskManagerTest.php | 42 +++++++++++++++++++ src/Domain/Service/TaskManager.php | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/Tests/Unit/Domain/Service/TaskManagerTest.php b/Tests/Unit/Domain/Service/TaskManagerTest.php index c6ebc70d..3fc153ed 100644 --- a/Tests/Unit/Domain/Service/TaskManagerTest.php +++ b/Tests/Unit/Domain/Service/TaskManagerTest.php @@ -192,4 +192,46 @@ public function applicationOptionsOverrideDeploymentOptions() $localOptions = array(); $this->taskManager->execute('MyVendor\\MyPackage\\Task\\TaskGroup\\MyTask', $this->node, $this->application, $this->deployment, 'test', $localOptions); } + + /** + * @test + */ + public function executeDoesNotPassPrefixedTaskOptionsOfBaseTaskToDefinedTask() + { + $globalOptions = array( + 'MyVendor\\MyPackage\\Task\\TaskGroup\\MyTask[taskOption]' => 'Foo' + ); + $this->deployment->setOptions($globalOptions); + + $this->task->expects($this->atLeastOnce())->method('execute')->with( + $this->anything(), + $this->anything(), + $this->anything(), + $this->logicalNot($this->arrayHasKey('taskOption')) + ); + + $localOptions = array(); + $this->taskManager->execute('MyVendor\\MyPackage\\Task\\TaskGroup\\MyTask', $this->node, $this->application, $this->deployment, 'test', $localOptions, 'MyVendor\\MyPackage\\DefinedTask\\TaskGroup\\MyTask'); + } + + /** + * @test + */ + public function executePassePrefixedDefinedTaskOptionsToDefinedTask() + { + $globalOptions = array( + 'MyVendor\\MyPackage\\DefinedTask\\TaskGroup\\MyTask[taskOption]' => 'Foo' + ); + $this->deployment->setOptions($globalOptions); + + $this->task->expects($this->atLeastOnce())->method('execute')->with( + $this->anything(), + $this->anything(), + $this->anything(), + $this->arrayHasKey('taskOption') + ); + + $localOptions = array(); + $this->taskManager->execute('MyVendor\\MyPackage\\Task\\TaskGroup\\MyTask', $this->node, $this->application, $this->deployment, 'test', $localOptions, 'MyVendor\\MyPackage\\DefinedTask\\TaskGroup\\MyTask'); + } } diff --git a/src/Domain/Service/TaskManager.php b/src/Domain/Service/TaskManager.php index a1bcfbf8..a7f9fd2f 100644 --- a/src/Domain/Service/TaskManager.php +++ b/src/Domain/Service/TaskManager.php @@ -41,7 +41,7 @@ public function execute($taskName, Node $node, Application $application, Deploym $task = $this->createTaskInstance($taskName); - $globalOptions = $this->overrideOptions($taskName, $deployment, $node, $application, $options); + $globalOptions = $this->overrideOptions($definedTaskName, $deployment, $node, $application, $options); if (!$deployment->isDryRun()) { $task->execute($node, $application, $deployment, $globalOptions);