/** @test */ function it_should_recognize_if_option_is_provided_correctly() { $validInput = ['src/']; $files = new FilesOption($validInput); $this->assertFalse($files->isAbsent()); $this->assertFalse($files->isEmpty()); }
protected function execute(InputInterface $input, OutputInterface $output) { $project = $input->getOption('project'); /** * @var \JMOlivas\Phpqa\Console\Application $application */ $application = $this->getApplication(); /** * @var \JMOlivas\Phpqa\Config $config */ $config = $application->getConfig(); if (!$config->isCustom() && !$project) { throw new Exception(sprintf('No local phpqa.yml or phpqa.yml.dist at current working directory ' . 'you must provide a valid project value (%s)', implode(',', $this->projects))); } if (!$config->isCustom() && !in_array($project, $this->projects)) { throw new Exception(sprintf('You must provide a valid project value (%s)', implode(',', $this->projects))); } $config->loadProjectConfiguration($project); $this->directory = $application->getApplicationDirectory(); $output->writeln(sprintf('<question>%s</question>', $application->getName())); $filesOption = new FilesOption($input->getOption('files')); $git = $input->getOption('git'); if (!$filesOption->isAbsent() && $git) { throw new Exception('Options `files` and `git` cannot be used in combination.'); } if ($filesOption->isAbsent() && !$git) { throw new Exception('You must set `files` or `git` options.'); } if (!$filesOption->isAbsent() && $filesOption->isEmpty()) { throw new Exception('Options `files` needs at least one file.'); } if ($git) { $files = $this->extractCommitedFiles($output, $config); } else { $files = $filesOption->normalize(); } $output->writeln(sprintf('<info>%s</info>', $config->get('application.messages.files.info'))); foreach ($files as $file) { $output->writeln(sprintf('<comment> - %s</comment>', $file)); } $this->checkComposer($output, $files, $config); $analyzers = array_keys($config->get('application.analyzer')); foreach ($analyzers as $analyzer) { $this->analyzer($output, $analyzer, $files, $config, $project); } $output->writeln(sprintf('<info>%s</info>', $config->get('application.messages.completed.info'))); }