Revision 399 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Foundation\Console;use Illuminate\Console\GeneratorCommand;use Illuminate\Support\Str;use Symfony\Component\Console\Attribute\AsCommand;use Symfony\Component\Console\Input\InputInterface;use Symfony\Component\Console\Input\InputOption;use Symfony\Component\Console\Output\OutputInterface;#[AsCommand(name: 'make:test')]class TestMakeCommand extends GeneratorCommand{/*** The console command name.** @var string*/protected $name = 'make:test';/*** The name of the console command.** This name is used to identify the command during lazy loading.** @var string|null** @deprecated*/protected static $defaultName = 'make:test';/*** The console command description.** @var string*/protected $description = 'Create a new test class';/*** The type of class being generated.** @var string*/protected $type = 'Test';/*** Get the stub file for the generator.** @return string*/protected function getStub(){$suffix = $this->option('unit') ? '.unit.stub' : '.stub';return $this->option('pest')? $this->resolveStubPath('/stubs/pest'.$suffix): $this->resolveStubPath('/stubs/test'.$suffix);}/*** Resolve the fully-qualified path to the stub.** @param string $stub* @return string*/protected function resolveStubPath($stub){return file_exists($customPath = $this->laravel->basePath(trim($stub, '/')))? $customPath: __DIR__.$stub;}/*** Get the destination class path.** @param string $name* @return string*/protected function getPath($name){$name = Str::replaceFirst($this->rootNamespace(), '', $name);return base_path('tests').str_replace('\\', '/', $name).'.php';}/*** Get the default namespace for the class.** @param string $rootNamespace* @return string*/protected function getDefaultNamespace($rootNamespace){if ($this->option('unit')) {return $rootNamespace.'\Unit';} else {return $rootNamespace.'\Feature';}}/*** Get the root namespace for the class.** @return string*/protected function rootNamespace(){return 'Tests';}/*** Get the console command options.** @return array*/protected function getOptions(){return [['force', 'f', InputOption::VALUE_NONE, 'Create the class even if the test already exists'],['unit', 'u', InputOption::VALUE_NONE, 'Create a unit test'],['pest', 'p', InputOption::VALUE_NONE, 'Create a Pest test'],];}/*** Interact further with the user if they were prompted for missing arguments.** @param \Symfony\Component\Console\Input\InputInterface $input* @param \Symfony\Component\Console\Output\OutputInterface $output* @return void*/protected function afterPromptingForMissingArguments(InputInterface $input, OutputInterface $output){if ($this->isReservedName($this->getNameInput()) || $this->didReceiveOptions($input)) {return;}$type = $this->components->choice('Which type of test would you like', ['feature','unit','pest feature','pest unit',], default: 0);match ($type) {'feature' => null,'unit' => $input->setOption('unit', true),'pest feature' => $input->setOption('pest', true),'pest unit' => tap($input)->setOption('pest', true)->setOption('unit', true),};}}