%PDF- %PDF-
| Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/vendor/pestphp/pest/src/Plugins/ |
| Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/vendor/pestphp/pest/src/Plugins/Help.php |
<?php
declare(strict_types=1);
namespace Pest\Plugins;
use Pest\Contracts\Plugins\HandlesArguments;
use Pest\Support\View;
use PHPUnit\TextUI\Help as PHPUnitHelp;
use Symfony\Component\Console\Output\OutputInterface;
use function Pest\version;
/**
* @internal
*/
final class Help implements HandlesArguments
{
use Concerns\HandleArguments;
/**
* Creates a new Plugin instance.
*/
public function __construct(
private readonly OutputInterface $output
) {
// ..
}
/**
* {@inheritDoc}
*/
public function handleArguments(array $arguments): array
{
if ($this->hasArgument('--help', $arguments)) {
View::render('version', [
'version' => version(),
]);
View::render('usage');
foreach ($this->getContent() as $title => $options) {
if ($title === 'Usage') {
continue;
}
$this->output->writeln([
'',
sprintf(' <fg=yellow;options=bold>%s OPTIONS:</>', mb_strtoupper($title)),
]);
foreach ($options as $option) {
if (! array_key_exists('arg', $option)) {
continue;
}
[
'arg' => $argument,
'desc' => $description,
] = $option;
assert(is_string($argument));
if (trim($argument) === '--process-isolation') {
continue;
}
View::render('components.two-column-detail', [
'left' => $this->colorizeOptions($argument),
'right' => preg_replace(['/</', '/>/'], ['[', ']'], $description),
]);
}
}
$this->output->write('', true);
exit(0);
}
return $arguments;
}
/**
* Colorizes the given string options.
*/
private function colorizeOptions(string $argument): string
{
return (string) preg_replace(
['/</', '/>/', '/(-+[\w-]+)/'],
['[', ']', '<fg=blue;options=bold>$1</>'],
$argument
);
}
/**
* @return array<string, array<int, array<'arg'|'desc'|int, array{arg: string, desc: string}|string>>>
*/
private function getContent(): array
{
$helpReflection = new PHPUnitHelp();
$content = (fn (): array => $this->elements())->call($helpReflection);
$content['Configuration'] = [...[[
'arg' => '--init',
'desc' => 'Initialise a standard Pest configuration',
]], ...$content['Configuration']];
$content['Execution'] = [...[
[
'arg' => '--parallel',
'desc' => 'Run tests in parallel',
],
[
'arg' => '--update-snapshots',
'desc' => 'Update snapshots for tests using the "toMatchSnapshot" expectation',
],
], ...$content['Execution']];
$content['Selection'] = [[
'arg' => '--bail',
'desc' => 'Stop execution upon first not-passed test',
], [
'arg' => '--todos',
'desc' => 'Output to standard output the list of todos',
], [
'arg' => '--retry',
'desc' => 'Run non-passing tests first and stop execution upon first error or failure',
], ...$content['Selection']];
$content['Reporting'] = [...$content['Reporting'], ...[
[
'arg' => '--compact',
'desc' => 'Replace default result output with Compact format',
],
]];
$content['Code Coverage'] = [[
'arg' => '--coverage ',
'desc' => 'Generate code coverage report and output to standard output',
], [
'arg' => '--coverage --min',
'desc' => 'Set the minimum required coverage percentage, and fail if not met',
], ...$content['Code Coverage']];
$content['Profiling'] = [
[
'arg' => '--profile ',
'desc' => 'Output to standard output the top ten slowest tests',
],
];
unset($content['Miscellaneous']);
return $content;
}
}