function it_triggers_events_during_error_flow(EventDispatcherInterface $eventDispatcher, TaskInterface $task1, TaskInterface $task2, ContextInterface $context)
{
$task1->run($context)->willThrow('GrumPHP\\Exception\\RuntimeException');
$task2->run($context)->willThrow('GrumPHP\\Exception\\RuntimeException');
$eventDispatcher->dispatch(RunnerEvents::RUNNER_RUN, Argument::type('GrumPHP\\Event\\RunnerEvent'))->shouldBeCalled();
$eventDispatcher->dispatch(TaskEvents::TASK_RUN, Argument::type('GrumPHP\\Event\\TaskEvent'))->shouldBeCalled();
$eventDispatcher->dispatch(TaskEvents::TASK_FAILED, Argument::type('GrumPHP\\Event\\TaskFailedEvent'))->shouldBeCalled();
$eventDispatcher->dispatch(RunnerEvents::RUNNER_FAILED, Argument::type('GrumPHP\\Event\\RunnerFailedEvent'))->shouldBeCalled();
$this->shouldThrow('GrumPHP\\Exception\\FailureException')->duringRun($context);
}