mirror of
https://github.com/pestphp/pest.git
synced 2026-03-06 15:57:21 +01:00
WIP
This commit is contained in:
committed by
Nuno Maduro
parent
6338d762fa
commit
f94ea9ba0d
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user