diff --git a/bin/pest-wrapper.php b/bin/pest-wrapper.php index c32d9e1f..2dbe4be5 100644 --- a/bin/pest-wrapper.php +++ b/bin/pest-wrapper.php @@ -77,7 +77,7 @@ $bootPest = (static function (): void { $bootPest(); - (new CallsHandleArguments())($phpunitArgv); + $phpunitArgv = (new CallsHandleArguments())($phpunitArgv); $application = new ApplicationForWrapperWorker( $phpunitArgv, diff --git a/src/Plugins/Parallel.php b/src/Plugins/Parallel.php index 133c1a58..d4e39d73 100644 --- a/src/Plugins/Parallel.php +++ b/src/Plugins/Parallel.php @@ -29,13 +29,18 @@ final class Parallel implements HandlesArguments Parallel\Handlers\Laravel::class, ]; + public static function isInParallelProcess(): bool + { + return (int) Arr::get($_SERVER, 'PARATEST') === 1; + } + public function handleArguments(array $arguments): array { if ($this->argumentsContainParallelFlags($arguments)) { exit($this->runTestSuiteInParallel($arguments)); } - if ((int) Arr::get($_SERVER, 'PARATEST') === 1) { + if (self::isInParallelProcess()) { return $this->runSubprocessHandlers($arguments); } diff --git a/src/Plugins/Parallel/Handlers/Pest.php b/src/Plugins/Parallel/Handlers/Pest.php index 726d687e..75c12557 100644 --- a/src/Plugins/Parallel/Handlers/Pest.php +++ b/src/Plugins/Parallel/Handlers/Pest.php @@ -2,19 +2,32 @@ namespace Pest\Plugins\Parallel\Handlers; +use Pest\Contracts\Plugins\HandlesArguments; use Pest\Plugins\Concerns\HandleArguments; use Pest\Plugins\Parallel\Contracts\HandlesSubprocessArguments; -use Pest\TestCaseMethodFilters\TodoTestCaseFilter; -use Pest\TestSuite; +use Pest\Plugins\Retry; -final class Pest implements HandlesSubprocessArguments +final class Pest implements HandlesArguments, HandlesSubprocessArguments { use HandleArguments; + public function handleArguments(array $arguments): array + { + if (Retry::$retrying) { + $_ENV['PEST_RETRY'] = '1'; + } + + return $arguments; + } + public function handleSubprocessArguments(array $arguments): array { $_SERVER['PEST_PARALLEL'] = '1'; + if (isset($_SERVER['PEST_RETRY'])) { + Retry::$retrying = true; + } + return $arguments; } }