%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/Init.php |
<?php declare(strict_types=1); namespace Pest\Plugins; use Composer\InstalledVersions; use Pest\Console\Thanks; use Pest\Contracts\Plugins\HandlesArguments; use Pest\Support\View; use Pest\TestSuite; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @internal */ final class Init implements HandlesArguments { /** * The option the triggers the init job. */ private const INIT_OPTION = '--init'; /** * The files that will be created. */ private const STUBS = [ 'phpunit.xml.stub' => 'phpunit.xml', 'Pest.php.stub' => 'tests/Pest.php', 'TestCase.php.stub' => 'tests/TestCase.php', 'Unit/ExampleTest.php.stub' => 'tests/Unit/ExampleTest.php', 'Feature/ExampleTest.php.stub' => 'tests/Feature/ExampleTest.php', ]; /** * Creates a new Plugin instance. */ public function __construct( private readonly TestSuite $testSuite, private readonly InputInterface $input, private readonly OutputInterface $output ) { // .. } /** * {@inheritdoc} */ public function handleArguments(array $arguments): array { if (! array_key_exists(1, $arguments)) { return $arguments; } if ($arguments[1] !== self::INIT_OPTION) { return $arguments; } unset($arguments[1]); $this->init(); exit(0); } /** * Initializes the tests directory. */ public function init(): void { $testsBaseDir = "{$this->testSuite->rootPath}/tests"; if (! is_dir($testsBaseDir)) { mkdir($testsBaseDir); } View::render('components.badge', [ 'type' => 'INFO', 'content' => 'Preparing tests directory.', ]); foreach (self::STUBS as $from => $to) { if ($this->isLaravelInstalled()) { $fromPath = __DIR__."/../../stubs/init-laravel/{$from}"; } else { $fromPath = __DIR__."/../../stubs/init/{$from}"; } $toPath = "{$this->testSuite->rootPath}/{$to}"; if (file_exists($toPath)) { View::render('components.two-column-detail', [ 'left' => $to, 'right' => 'File already exists.', ]); continue; } if (! is_dir(dirname($toPath))) { mkdir(dirname($toPath)); } copy($fromPath, $toPath); View::render('components.two-column-detail', [ 'left' => $to, 'right' => 'File created.', ]); } View::render('components.new-line'); (new Thanks($this->input, $this->output))(); } /** * Checks if laravel is installed through Composer */ private function isLaravelInstalled(): bool { return InstalledVersions::isInstalled('laravel/laravel'); } }