This commit is contained in:
Luke Downing
2023-02-08 13:04:52 +00:00
committed by Nuno Maduro
parent 6338d762fa
commit f94ea9ba0d

View File

@ -6,9 +6,12 @@ use ParaTest\ParaTestCommand;
use Pest\Contracts\Plugins\HandlesArguments; use Pest\Contracts\Plugins\HandlesArguments;
use Pest\Plugins\Actions\CallsAddsOutput; use Pest\Plugins\Actions\CallsAddsOutput;
use Pest\Plugins\Concerns\HandleArguments; use Pest\Plugins\Concerns\HandleArguments;
use Pest\Plugins\Parallel\Handlers\Laravel;
use Pest\Support\Arr; use Pest\Support\Arr;
use Pest\Support\Container; use Pest\Support\Container;
use Pest\TestSuite; use Pest\TestSuite;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use function Pest\version; use function Pest\version;
@ -18,15 +21,14 @@ final class Parallel implements HandlesArguments
use HandleArguments; use HandleArguments;
private const HANDLERS = [ private const HANDLERS = [
\Pest\Plugins\Parallel\Handlers\Parallel::class, Parallel\Handlers\Parallel::class,
\Pest\Plugins\Parallel\Handlers\Laravel::class, Laravel::class,
]; ];
public function handleArguments(array $arguments): array public function handleArguments(array $arguments): array
{ {
if ($this->argumentsContainParallelFlags($arguments)) { if ($this->argumentsContainParallelFlags($arguments)) {
$exitCode = $this->runTestSuiteInParallel($arguments); exit($this->runTestSuiteInParallel($arguments));
exit($exitCode);
} }
$this->markTestSuiteAsParallelSubProcessIfRequired(); $this->markTestSuiteAsParallelSubProcessIfRequired();
@ -47,7 +49,7 @@ final class Parallel implements HandlesArguments
if (! class_exists(ParaTestCommand::class)) { if (! class_exists(ParaTestCommand::class)) {
$this->askUserToInstallParatest(); $this->askUserToInstallParatest();
return 1; return Command::FAILURE;
} }
$filteredArguments = array_reduce( $filteredArguments = array_reduce(
@ -56,16 +58,9 @@ final class Parallel implements HandlesArguments
$arguments $arguments
); );
$testSuite = TestSuite::getInstance(); $exitCode = $this->paratestCommand()->run(new ArgvInput($filteredArguments));
$command = ParaTestCommand::applicationFactory($testSuite->rootPath); return (new CallsAddsOutput())($exitCode);
$command->setAutoExit(false);
$command->setName('Pest');
$command->setVersion(version());
$exitCode = $command->run(new ArgvInput($filteredArguments));
$exitCode = (new CallsAddsOutput())($exitCode);
exit($exitCode);
} }
private function markTestSuiteAsParallelSubProcessIfRequired(): void private function markTestSuiteAsParallelSubProcessIfRequired(): void
@ -82,4 +77,14 @@ final class Parallel implements HandlesArguments
'Please run <fg=yellow>composer require --dev brianium/paratest</> to install ParaTest.', 'Please run <fg=yellow>composer require --dev brianium/paratest</> to install ParaTest.',
]); ]);
} }
private function paratestCommand(): Application
{
$command = ParaTestCommand::applicationFactory(TestSuite::getInstance()->rootPath);
$command->setAutoExit(false);
$command->setName('Pest');
$command->setVersion(version());
return $command;
}
} }