/**
  * @param ProcessEvent $event
  */
 public function stopOnFailure(ProcessEvent $event)
 {
     /** @var ScenarioProcess $process */
     $process = $event->getProcess();
     if ($process->withError()) {
         $this->parallelProcessRunner->stop();
         $this->terminate(1);
     }
 }
 /**
  * @param int   $maxParallelProcess
  * @param mixed $processes
  * @param array $expectedResult
  *
  * @dataProvider providerStop
  */
 public function testStop($maxParallelProcess, $processes, array $expectedResult)
 {
     $runner = new ParallelProcessRunner();
     $runner->setMaxParallelProcess($maxParallelProcess);
     $runner->add($processes);
     $runner->getEventDispatcher()->addListener(ParallelProcessRunnerEventType::PROCESS_STOP_AFTER, function (ProcessEvent $event) use($runner) {
         if ($event->getProcess()->getOutput() == 'stop') {
             $runner->stop();
         }
     });
     $this->assertEquals($expectedResult, $this->getOutputArray($runner->run()));
 }