feat(parallel): Adds support for plugins to filter parallel arguments

This commit is contained in:
Luke Downing
2023-03-22 11:09:53 +00:00
parent 4c769fac66
commit 7433cc5565

View File

@ -14,6 +14,7 @@ use Pest\Support\Arr;
use Pest\Support\Container;
use Pest\TestSuite;
use function Pest\version;
use Stringable;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
@ -21,6 +22,8 @@ final class Parallel implements HandlesArguments
{
use HandleArguments;
private const GLOBAL_PREFIX = 'PEST_PARALLEL_GLOBAL_';
private const HANDLERS = [
Parallel\Handlers\Parallel::class,
Parallel\Handlers\Pest::class,
@ -57,6 +60,26 @@ final class Parallel implements HandlesArguments
return ((int) $argvValue) === 1;
}
public static function setGlobal(string $key, string|int|bool|Stringable $value): void
{
$data = ['value' => $value instanceof Stringable ? $value->__toString() : $value];
$_SERVER[self::GLOBAL_PREFIX.$key] = json_encode($data);
}
public static function getGlobal(string $key): string|int|bool|null
{
$placesToCheck = [$_SERVER, $_ENV];
foreach ($placesToCheck as $location) {
if (array_key_exists(self::GLOBAL_PREFIX.$key, $location)) {
return json_decode($location[self::GLOBAL_PREFIX.$key])['value'] ?? null;
}
}
return null;
}
/**
* {@inheritdoc}
*/