testSuite = $testSuite; $this->output = $output; } /** * {@inheritdoc} * * @phpstan-ignore-next-line * * @param array $argv */ protected function handleArguments(array $argv): void { $argv = InteractsWithPlugins::handleArguments($argv); parent::handleArguments($argv); /* * Let's validate the configuration. Making * sure all options are yet supported by Pest. */ ValidatesConfiguration::in($this->arguments); } /** * Creates a new PHPUnit test runner. */ protected function createRunner(): TestRunner { /* * First, let's add the defaults we use on `pest`. Those * are the printer class, and others that may be appear. */ $this->arguments = AddsDefaults::to($this->arguments); $testRunner = new TestRunner($this->arguments['loader']); $testSuite = $this->arguments['test']; if (is_string($testSuite)) { if (is_dir($testSuite)) { /** @var string[] $files */ $files = (new FileIteratorFacade())->getFilesAsArray( $testSuite, $this->arguments['testSuffixes'] ); } else { $files = [$testSuite]; } $testSuite = new BaseTestSuite($testSuite); $testSuite->addTestFiles($files); $this->arguments['test'] = $testSuite; } AddsTests::to($testSuite, $this->testSuite); return $testRunner; } /** * {@inheritdoc} * * @phpstan-ignore-next-line * * @param array $argv */ public function run(array $argv, bool $exit = true): int { LoadStructure::in($this->testSuite->rootPath); $result = parent::run($argv, false); $result = InteractsWithPlugins::addOutput($result); exit($result); } protected function showHelp(): void { /** @var Version $version */ $version = Container::getInstance()->get(Version::class); $version->handleArguments(['--version']); parent::showHelp(); (new Help($this->output))(); } }