public static createNonBlockingFailed ( GrumPHP\Task\TaskInterface $task, GrumPHP\Task\Context\ContextInterface $context, string $message ) : |
||
$task | GrumPHP\Task\TaskInterface | |
$context | GrumPHP\Task\Context\ContextInterface | |
$message | string | |
Результат |
function it_has_failed_if_it_contains_failed_task_result(TaskInterface $task, ContextInterface $context) { $aTask = $task->getWrappedObject(); $aContext = $context->getWrappedObject(); $this->add(TaskResult::createPassed($aTask, $aContext)); $this->add(TaskResult::createNonBlockingFailed($aTask, $aContext, 'non blocking')); $this->isFailed()->shouldReturn(false); $this->add(TaskResult::createFailed($aTask, $aContext, 'failed message')); $this->isFailed()->shouldReturn(true); }
function it_should_display_warning_of_non_blocking_failed_tasks(OutputInterface $output, TaskRunner $taskRunner, TaskInterface $task, ContextInterface $context) { $aTask = $task->getWrappedObject(); $aContext = $context->getWrappedObject(); $nonBlockingFailedTaskResult = TaskResult::createNonBlockingFailed($aTask, $aContext, 'non blocking task message'); $taskResults = new TaskResultCollection(); $taskResults->add($nonBlockingFailedTaskResult); $taskRunner->run($context)->willReturn($taskResults); $output->isDecorated()->willReturn(false); $output->getVerbosity()->willReturn(OutputInterface::VERBOSITY_NORMAL); $output->writeln(Argument::containingString('non blocking task message'))->shouldBeCalled(); $output->writeln(Argument::any())->shouldBeCalled(); $this->run($output, $context); }
/** * @param TaskInterface $task * @param ContextInterface $context * * @return TaskResultInterface * @throws RuntimeException */ private function runTask(TaskInterface $task, ContextInterface $context) { try { $this->eventDispatcher->dispatch(TaskEvents::TASK_RUN, new TaskEvent($task, $context)); $result = $task->run($context); } catch (RuntimeException $e) { $result = TaskResult::createFailed($task, $context, $e->getMessage()); } if (!$result instanceof TaskResultInterface) { throw RuntimeException::invalidTaskReturnType($task); } if (!$result->isPassed() && !$this->grumPHP->isBlockingTask($task->getName())) { $result = TaskResult::createNonBlockingFailed($result->getTask(), $result->getContext(), $result->getMessage()); } if (!$result->isPassed()) { $e = new RuntimeException($result->getMessage()); $this->eventDispatcher->dispatch(TaskEvents::TASK_FAILED, new TaskFailedEvent($task, $context, $e)); return $result; } $this->eventDispatcher->dispatch(TaskEvents::TASK_COMPLETE, new TaskEvent($task, $context)); return $result; }