/**
  * {@inheritdoc}
  */
 public function execute(InputInterface $input, OutputInterface $output)
 {
     $result = null;
     $maxProcessesAmount = max(1, $input->getOption(self::OPTION_PARALLEL_PROCESS));
     $locator = $input->getArgument('paths');
     if ($maxProcessesAmount > 1) {
         $this->outputPrinter->init($output);
         $this->processFactory->init($this->inputDefinition, $input);
         $this->featureRunner->setMaxParallelProcess($maxProcessesAmount);
         $result = 0;
         foreach ($this->featureExtractor->extract($locator) as $featureNode) {
             $result = max($result, $this->featureRunner->run($featureNode));
         }
     }
     return $result;
 }
 /**
  * @param int $maxParallelProcess
  *
  * @dataProvider providerSetMaxParallelProcess
  */
 public function testSetMaxParallelProcess($maxParallelProcess)
 {
     $eventDispatcher = $this->getMock(EventDispatcherInterface::class);
     $scenarioInfoExtractor = $this->getMock(ScenarioInfoExtractor::class);
     $scenarioProcessFactory = $this->getMock(ScenarioProcessFactory::class);
     $parallelProcessRunner = $this->getMock(ParallelProcessRunner::class, ['setMaxParallelProcess']);
     $parallelProcessRunner->expects($this->once())->method('setMaxParallelProcess')->with($maxParallelProcess);
     /** @var $eventDispatcher EventDispatcherInterface $featureRunner */
     /** @var $scenarioInfoExtractor ScenarioInfoExtractor $featureRunner */
     /** @var $scenarioProcessFactory ScenarioProcessFactory $featureRunner */
     /** @var $parallelProcessRunner ParallelProcessRunner $featureRunner */
     $featureRunner = new FeatureRunner($eventDispatcher, $scenarioInfoExtractor, $scenarioProcessFactory, $parallelProcessRunner);
     $featureRunner->setMaxParallelProcess($maxParallelProcess);
 }