From 5ca4c5bca969be728a9cffdff5d06c07ecc49764 Mon Sep 17 00:00:00 2001 From: Luke Downing Date: Mon, 13 Feb 2023 09:43:49 +0000 Subject: [PATCH] chore(cleanup): Tidy-up and tweaks of Pest Parallel integration. --- src/Plugins/Parallel.php | 40 +++++++++++----------- src/Plugins/Parallel/Handlers/Laravel.php | 9 ++--- src/Plugins/Parallel/Handlers/Parallel.php | 2 +- src/Repositories/AfterEachRepository.php | 2 +- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/Plugins/Parallel.php b/src/Plugins/Parallel.php index e1111e69..bebe2105 100644 --- a/src/Plugins/Parallel.php +++ b/src/Plugins/Parallel.php @@ -31,22 +31,7 @@ final class Parallel implements HandlesArguments ]; /** - * If the - */ - public static function isCommand(): bool - { - // get binary name - Arr::get($_SERVER, 'argv.0'); - - $argvValue = Arr::get($_ENV, 'PARATEST'); - - assert(is_string($argvValue) || is_int($argvValue) || is_null($argvValue)); - - return ((int) $argvValue) === 1; - } - - /** - * If the + * If this code is running in a worker process rather than the main process. */ public static function isWorker(): bool { @@ -57,23 +42,28 @@ final class Parallel implements HandlesArguments return ((int) $argvValue) === 1; } + /** + * {@inheritdoc} + */ public function handleArguments(array $arguments): array { - if ($this->argumentsContainParallelFlags($arguments)) { + if ($this->argumentsContainParallelOptions($arguments)) { exit($this->runTestSuiteInParallel($arguments)); } if (self::isWorker()) { - return $this->runWorkersHandlers($arguments); + return $this->runWorkerHandlers($arguments); } return $arguments; } /** + * Whether the given command line arguments indicate that the test suite should be run in parallel. + * * @param array $arguments */ - private function argumentsContainParallelFlags(array $arguments): bool + private function argumentsContainParallelOptions(array $arguments): bool { if ($this->hasArgument('--parallel', $arguments)) { return true; @@ -83,6 +73,8 @@ final class Parallel implements HandlesArguments } /** + * Runs the test suite in parallel. This method will exit the process upon completion. + * * @param array $arguments * * @throws JsonException @@ -114,10 +106,12 @@ final class Parallel implements HandlesArguments } /** + * Runs any handlers that have been registered to handle worker arguments, and returns the modified arguments. + * * @param array $arguments * @return array */ - private function runWorkersHandlers(array $arguments): array + private function runWorkerHandlers(array $arguments): array { $handlers = array_filter( array_map(fn ($handler): object|string => Container::getInstance()->get($handler), self::HANDLERS), @@ -131,6 +125,9 @@ final class Parallel implements HandlesArguments ); } + /** + * Outputs a message to the user asking them to install ParaTest as a dev dependency. + */ private function askUserToInstallParatest(): void { /** @var OutputInterface $output */ @@ -142,6 +139,9 @@ final class Parallel implements HandlesArguments ]); } + /** + * Builds an instance of the Paratest command. + */ private function paratestCommand(): Application { /** @var non-empty-string $rootPath */ diff --git a/src/Plugins/Parallel/Handlers/Laravel.php b/src/Plugins/Parallel/Handlers/Laravel.php index 41432c29..a1573b8e 100644 --- a/src/Plugins/Parallel/Handlers/Laravel.php +++ b/src/Plugins/Parallel/Handlers/Laravel.php @@ -21,6 +21,9 @@ final class Laravel implements HandlesArguments { use HandleArguments; + /** + * {@inheritdoc} + */ public function handleArguments(array $arguments): array { return self::whenUsingLaravel($arguments, function (array $arguments): array { @@ -43,10 +46,8 @@ final class Laravel implements HandlesArguments { $isLaravelApplication = InstalledVersions::isInstalled('laravel/framework', false); $isLaravelPackage = class_exists(\Orchestra\Testbench\TestCase::class); - if ($isLaravelApplication) { - return $closure($arguments); - } - if ($isLaravelPackage) { + + if ($isLaravelApplication && ! $isLaravelPackage) { return $closure($arguments); } diff --git a/src/Plugins/Parallel/Handlers/Parallel.php b/src/Plugins/Parallel/Handlers/Parallel.php index 76829b60..7126881c 100644 --- a/src/Plugins/Parallel/Handlers/Parallel.php +++ b/src/Plugins/Parallel/Handlers/Parallel.php @@ -25,7 +25,7 @@ final class Parallel implements HandlesArguments ]; /** - * Handles the arguments, removing the ones that are not needed, and adding the "runner" argument. + * Handles the arguments, removing the ones that are not needed, and adds the "runner" argument. */ public function handleArguments(array $arguments): array { diff --git a/src/Repositories/AfterEachRepository.php b/src/Repositories/AfterEachRepository.php index 0dec040e..affc4493 100644 --- a/src/Repositories/AfterEachRepository.php +++ b/src/Repositories/AfterEachRepository.php @@ -33,7 +33,7 @@ final class AfterEachRepository } /** - * Gets a after each closure by the given filename. + * Gets an after each closure by the given filename. */ public function get(string $filename): Closure {