/** * @test */ public function executePassesApplicationOptionsToTask() { $node = new \TYPO3\Surf\Domain\Model\Node('Test node'); $application = new \TYPO3\Surf\Domain\Model\Application('Test application'); $deployment = new \TYPO3\Surf\Domain\Model\Deployment('Test deployment'); /** @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject $logger */ $logger = $this->getMock('Psr\\Log\\LoggerInterface'); $deployment->setLogger($logger); $task = $this->getMock('TYPO3\\Surf\\Domain\\Model\\Task'); /** @var \TYPO3\Surf\Domain\Service\TaskManager|\PHPUnit_Framework_MockObject_MockObject $taskManager */ $taskManager = $this->getMock('TYPO3\\Surf\\Domain\\Service\\TaskManager', array('createTaskInstance')); $taskManager->expects($this->any())->method('createTaskInstance')->with('MyVendor\\MyPackage\\Task\\TaskGroup\\MyTask')->will($this->returnValue($task)); $applicationOptions = array('repositoryUrl' => 'ssh://review.typo3.org/foo'); $application->setOptions($applicationOptions); $task->expects($this->atLeastOnce())->method('execute')->with($this->anything(), $this->anything(), $this->anything(), $this->arrayHasKey('repositoryUrl')); $localOptions = array(); $taskManager->execute('MyVendor\\MyPackage\\Task\\TaskGroup\\MyTask', $node, $application, $deployment, 'test', $localOptions); }
/** * @test */ public function executeProcessProperlyLogsStandardAndErrorOutput() { $shellCommandService = new \TYPO3\Surf\Domain\Service\ShellCommandService(); $deployment = new \TYPO3\Surf\Domain\Model\Deployment('TestDeployment'); /** @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject $mockLogger */ $mockLogger = $this->getMock('Psr\\Log\\LoggerInterface'); $deployment->setLogger($mockLogger); $mockLogger->expects($this->at(0))->method('debug')->with('$ out'); $mockLogger->expects($this->at(1))->method('error')->with('$ err'); $shellCommandService->executeProcess($deployment, 'echo "out" ; echo "err" >&2 ', true, '$ '); }
/** * Build a Deployment object with Workflow for testing * * @param array $executedTasks Register for executed tasks * @return \TYPO3\Surf\Domain\Model\Deployment A configured Deployment for testing */ protected function buildDeployment(array &$executedTasks = array()) { $deployment = new \TYPO3\Surf\Domain\Model\Deployment('Test deployment'); $mockLogger = $this->getMock('Psr\\Log\\LoggerInterface'); // Enable log to console to debug tests // $mockLogger->expects($this->any())->method('log')->will($this->returnCallback(function($message) { // echo $message . chr(10); // })); $deployment->setLogger($mockLogger); $mockTaskManager = $this->getMock('TYPO3\\Surf\\Domain\\Service\\TaskManager'); $mockTaskManager->expects($this->any())->method('execute')->will($this->returnCallback(function ($task, Node $node, Application $application, \TYPO3\Surf\Domain\Model\Deployment $deployment, $stage, array $options = array()) use(&$executedTasks) { $executedTasks[] = array('task' => $task, 'node' => $node->getName(), 'application' => $application->getName(), 'deployment' => $deployment->getName(), 'stage' => $stage, 'options' => $options); })); $workflow = new SimpleWorkflow($mockTaskManager); $deployment->setWorkflow($workflow); return $deployment; }