/** * {@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); }