protected function execute(InputInterface $input, OutputInterface $output) { $constraintDescriber = new \RestSpec\Output\ConstraintDescriber(); $consoleOutput = new \RestSpec\Output\ConsoleOutput($output, $constraintDescriber); $validator = new \RestSpec\Validator\Rest(); $loader = new \RestSpec\Loader(); $loader->run(); try { $useCaseFilter = $input->getArgument('filter'); $api = $input->getOption('api'); $restSpec = Spec\Rest::getInstance(); $restSpecValidator = new \RestSpec\Spec\Validator(); $restSpecValidator->validate($restSpec); $progressBar = new ProgressBar($output); $progressBar->setFormat('Testing your API specs. Already tested: %current% use cases [%bar%]'); $progressBar->start(); $validator->progress(function ($useCases) use($output, $progressBar) { $progressBar->advance(); }); $report = $validator->validate($restSpec, $api, $useCaseFilter); $progressBar->finish(); $output->write($report->dumpAsConsoleText($api, $useCaseFilter)); if ($report->getTotalUseCases() === 0 || $report->getUseCasesFailedCount() > 0) { exit(1); } else { exit(0); } } catch (\Exception $e) { $log = join("\n", $validator->getLog()); $consoleOutput->getOutput()->writeln(sprintf("\n<error>Whoops! Some unexpected error occured. Validation log dump:\n\n%s\n\nThe exception type is: %s, and a message is following:</error>", $log, get_class($e))); $consoleOutput->errorHandler($e, 2); } }
protected function execute(InputInterface $input, OutputInterface $output) { $constraintDescriber = new \RestSpec\Output\ConstraintDescriber(); $consoleOutput = new \RestSpec\Output\ConsoleOutput($output, $constraintDescriber); $loader = new \RestSpec\Loader(); $loader->run(); $restSpec = Spec\Rest::getInstance(); $restSpecValidator = new \RestSpec\Spec\Validator(); $restSpecValidator->validate($restSpec); $apiSpec = $restSpec->getApiSpecs(); foreach ($apiSpec as $apiSpec) { $output->writeln(sprintf("\nAPI base URL: <info>%s</info>\n", $apiSpec->getBaseUrl())); foreach ($apiSpec->getUrlSpecs() as $urlSpec) { $output->writeln(sprintf("<comment>%s</comment>\n\n<info>%s</info>\n", $urlSpec->getDescription(), $urlSpec->getUrl())); $useCases = $urlSpec->getUseCases(); $useCaseView = new UseCaseView(); foreach ($useCases as $useCase) { $output->write($useCaseView->view($useCase, $output)); } } } }