mirror of
https://github.com/pestphp/pest.git
synced 2026-03-06 15:57:21 +01:00
64 lines
2.2 KiB
PHP
Executable File
64 lines
2.2 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php declare(strict_types=1);
|
|
|
|
use NunoMaduro\Collision\Provider;
|
|
use Pest\Actions\ValidatesEnvironment;
|
|
use Pest\Support\Container;
|
|
use Pest\TestSuite;
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Input\ArgvInput;
|
|
use Symfony\Component\Console\Output\ConsoleOutput;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
(static function () {
|
|
// Used when Pest is required using composer.
|
|
$vendorPath = dirname(__DIR__, 4) . '/vendor/autoload.php';
|
|
|
|
// Used when Pest maintainers are running Pest tests.
|
|
$localPath = dirname(__DIR__) . '/vendor/autoload.php';
|
|
|
|
if (file_exists($vendorPath)) {
|
|
include_once $vendorPath;
|
|
$autoloadPath = $vendorPath;
|
|
} else {
|
|
include_once $localPath;
|
|
$autoloadPath = $localPath;
|
|
}
|
|
|
|
(new Provider())->register();
|
|
|
|
// Get $rootPath based on $autoloadPath
|
|
$rootPath = dirname($autoloadPath, 2);
|
|
$argv = new ArgvInput();
|
|
|
|
$testSuite = TestSuite::getInstance($rootPath, $argv->getParameterOption('--test-directory', 'tests'));
|
|
|
|
$isDecorated = $argv->getParameterOption('--colors', 'always') !== 'never';
|
|
$output = new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, $isDecorated);
|
|
|
|
$container = Container::getInstance();
|
|
$container->add(TestSuite::class, $testSuite);
|
|
$container->add(OutputInterface::class, $output);
|
|
|
|
ValidatesEnvironment::in($testSuite);
|
|
|
|
$args = $_SERVER['argv'];
|
|
|
|
// Let's remove any arguments that PHPUnit does not understand
|
|
if ($argv->hasParameterOption('--test-directory')) {
|
|
foreach ($args as $key => $value) {
|
|
if (strpos($value, '--test-directory') !== false) {
|
|
unset($args[$key]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (($runInParallel = $argv->hasParameterOption(['--parallel', '-p'])) && !class_exists(\Pest\Parallel\Command::class)) {
|
|
$output->writeln("Parallel support requires the Pest Parallel plugin. Run <fg=yellow;options=bold>`composer require --dev pestphp/pest-plugin-parallel`</> first.");
|
|
exit(Command::FAILURE);
|
|
}
|
|
|
|
$command = $runInParallel ? \Pest\Parallel\Command::class : \Pest\Console\Command::class;
|
|
exit($container->get($command)->run($args));
|
|
})();
|