/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('*.php'); if (0 === count($files)) { return; } // We don't care about changed files here, we want to run the entire suit every time $config = $this->getConfiguration(); $this->processBuilder->setArguments(array($this->getCommandLocation())); if ($config['config']) { $this->processBuilder->add('--config=' . $config['config']); } if ($config['format']) { $this->processBuilder->add('--format=' . $config['format']); } if ($config['suite']) { $this->processBuilder->add('--suite=' . $config['suite']); } if ($config['stop_on_failure']) { $this->processBuilder->add('--stop-on-failure'); } $process = $this->processBuilder->getProcess(); $process->run(); if (!$process->isSuccessful()) { throw new RuntimeException($process->getOutput()); } }
/** * @param ContextInterface $context * @return TaskResult */ public function run(ContextInterface $context) { $config = $this->getConfiguration(); $files = $context->getFiles()->extensions($config['triggered_by']); if (0 === count($files)) { return TaskResult::createSkipped($this, $context); } if (is_file('./vendor/bin/fixbom')) { $fixCommand = './vendor/bin/fixbom'; } elseif (is_file('./bin/fixbom')) { $fixCommand = './bin/fixbom'; } else { $fixCommand = 'fixbom'; } $shouldGetFixedLog = []; /** @var \Symfony\Component\Finder\SplFileInfo $file */ foreach ($files as $file) { $execFile = $file->getPathname(); $debugLog[] = $execFile; if ($this->isFileWithBOM($execFile)) { $shouldGetFixedLog[] = $execFile . " has BOM and should be fixed"; $fixCommand .= " '" . $execFile . "'"; } } if (count($shouldGetFixedLog) > 0) { return TaskResult::createFailed($this, $context, implode(PHP_EOL, $shouldGetFixedLog) . PHP_EOL . "you can use this to fix them:" . PHP_EOL . $fixCommand); } return TaskResult::createPassed($this, $context); }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $config = $this->getConfiguration(); $files = $context->getFiles()->path(pathinfo($config['file'], PATHINFO_DIRNAME))->name(pathinfo($config['file'], PATHINFO_BASENAME)); if (0 === count($files)) { return TaskResult::createSkipped($this, $context); } $arguments = $this->processBuilder->createArgumentsForCommand('composer'); $arguments->add('validate'); $arguments->addOptionalArgument('--no-check-all', $config['no_check_all']); $arguments->addOptionalArgument('--no-check-lock', $config['no_check_lock']); $arguments->addOptionalArgument('--no-check-publish', $config['no_check_publish']); $arguments->addOptionalArgument('--with-dependencies', $config['with_dependencies']); $arguments->addOptionalArgument('--strict', $config['strict']); $arguments->addOptionalArgument('%s', $config['file']); $process = $this->processBuilder->buildProcess($arguments); $process->run(); if (!$process->isSuccessful()) { return TaskResult::createFailed($this, $context, $this->formatter->format($process)); } if ($config['no_local_repository'] && $this->hasLocalRepository($files->first())) { return TaskResult::createFailed($this, $context, 'You have at least one local repository declared.'); } return TaskResult::createPassed($this, $context); }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('*.php'); if (0 === count($files)) { return; } $config = $this->getConfiguration(); $this->processBuilder->setArguments(array($this->getCommandLocation(), '--standard=' . $config['standard'])); if (!$config['show_warnings']) { $this->processBuilder->add('--warning-severity=0'); } if ($config['tab_width']) { $this->processBuilder->add('--tab-width=' . $config['tab_width']); } if (count($config['sniffs'])) { $this->processBuilder->add('--sniffs=' . implode(',', $config['sniffs'])); } if (count($config['ignore_patterns'])) { $this->processBuilder->add('--ignore=' . implode(',', $config['ignore_patterns'])); } foreach ($files as $file) { $this->processBuilder->add($file); } $process = $this->processBuilder->getProcess(); $process->run(); if (!$process->isSuccessful()) { throw new RuntimeException($process->getOutput()); } }
function it_throws_exception_if_the_process_fails(JsonLinter $linter, ContextInterface $context) { $linter->isInstalled()->willReturn(true); $linter->setDetectKeyConflicts(false)->shouldBeCalled(); $linter->lint(Argument::type('SplFileInfo'))->willReturn(new LintErrorsCollection(array(new JsonLintError(LintError::TYPE_ERROR, 0, 'error', 'file.json', 1, 1)))); $context->getFiles()->willReturn(new FilesCollection(array(new SplFileInfo('file.json', '.', 'file.json')))); $this->shouldThrow('GrumPHP\\Exception\\RuntimeException')->duringRun($context); }
function it_has_failed_if_it_contains_failed_task_result(TaskInterface $task, ContextInterface $context) { $aTask = $task->getWrappedObject(); $aContext = $context->getWrappedObject(); $this->add(TaskResult::createPassed($aTask, $aContext)); $this->add(TaskResult::createNonBlockingFailed($aTask, $aContext, 'non blocking')); $this->isFailed()->shouldReturn(false); $this->add(TaskResult::createFailed($aTask, $aContext, 'failed message')); $this->isFailed()->shouldReturn(true); }
function it_throws_exception_if_the_process_fails(JsonLinter $linter, ContextInterface $context) { $linter->isInstalled()->willReturn(true); $linter->setDetectKeyConflicts(false)->shouldBeCalled(); $linter->lint(Argument::type('SplFileInfo'))->willReturn(new LintErrorsCollection([new JsonLintError(LintError::TYPE_ERROR, 0, 'error', 'file.json', 1, 1)])); $context->getFiles()->willReturn(new FilesCollection([new SplFileInfo('file.json', '.', 'file.json')])); $result = $this->run($context); $result->shouldBeAnInstanceOf(TaskResultInterface::class); $result->isPassed()->shouldBe(false); }
function it_throws_exception_if_the_process_fails(ProcessBuilder $processBuilder, Process $process, ContextInterface $context) { $processBuilder->setArguments(Argument::type('array'))->shouldBeCalled(); $processBuilder->getProcess()->willReturn($process); $process->run()->shouldBeCalled(); $process->isSuccessful()->willReturn(false); $process->getOutput()->shouldBeCalled(); $context->getFiles()->willReturn(new FilesCollection(array(new SplFileInfo('test.php')))); $this->shouldThrow('GrumPHP\\Exception\\RuntimeException')->duringRun($context); }
function it_lists_files_with_merge_conflicts(ProcessBuilder $processBuilder, ContextInterface $context, Process $process) { $arguments = new ProcessArgumentsCollection(); $processBuilder->createArgumentsForCommand('git')->willReturn($arguments); $processBuilder->buildProcess($arguments)->willReturn($process); $context->getFiles()->willReturn(new FilesCollection([new SplFileInfo('file1.php', '.', 'file1.php')])); $result = $this->run($context); $result->shouldBeAnInstanceOf(TaskResultInterface::class); $result->isPassed()->shouldBe(true); }
function it_throws_exception_if_the_process_is_successfull(GrumPHP $grumPHP, LocatorInterface $externalCommandLocator, ProcessBuilder $processBuilder, Process $process, ContextInterface $context) { $this->beConstructedWith($grumPHP, array('keywords' => array('var_dump(')), $externalCommandLocator, $processBuilder); $processBuilder->setArguments(Argument::type('array'))->shouldBeCalled(); $processBuilder->getProcess()->willReturn($process); $process->run()->shouldBeCalled(); $process->isSuccessful()->willReturn(true); $process->getOutput()->shouldBeCalled(); $context->getFiles()->willReturn(new FilesCollection(array(new SplFileInfo('file1.php')))); $this->shouldThrow('GrumPHP\\Exception\\RuntimeException')->duringRun($context); }
function it_throws_exception_if_the_process_fails(YamlLinter $linter, ContextInterface $context) { $linter->isInstalled()->willReturn(true); $linter->setObjectSupport(false)->shouldBeCalled(); $linter->setExceptionOnInvalidType(false)->shouldBeCalled(); $linter->lint(Argument::type('SplFileInfo'))->willReturn(new LintErrorsCollection(array(new YamlLintError(LintError::TYPE_ERROR, 0, 'error', 'file.yaml', 1, 1)))); $context->getFiles()->willReturn(new FilesCollection(array(new SplFileInfo('file.yaml', '.', 'file.yaml')))); $result = $this->run($context); $result->shouldBeAnInstanceOf('GrumPHP\\Runner\\TaskResultInterface'); $result->isPassed()->shouldBe(false); }
function it_throws_exception_if_the_process_fails(XmlLinter $linter, ContextInterface $context) { $linter->isInstalled()->willReturn(true); $linter->setLoadFromNet(false)->shouldBeCalled(); $linter->setXInclude(false)->shouldBeCalled(); $linter->setDtdValidation(false)->shouldBeCalled(); $linter->setSchemeValidation(false)->shouldBeCalled(); $linter->lint(Argument::type('SplFileInfo'))->willReturn(new LintErrorsCollection(array(new XmlLintError(LintError::TYPE_ERROR, 0, 'error', 'file.xml', 1, 1)))); $context->getFiles()->willReturn(new FilesCollection(array(new SplFileInfo('file.xml', '.', 'file.xml')))); $this->shouldThrow('GrumPHP\\Exception\\RuntimeException')->duringRun($context); }
function it_throws_exception_if_the_process_fails(ProcessBuilder $processBuilder, Process $process, ContextInterface $context) { $arguments = new ProcessArgumentsCollection(); $processBuilder->createArgumentsForCommand('behat')->willReturn($arguments); $processBuilder->buildProcess($arguments)->willReturn($process); $process->run()->shouldBeCalled(); $process->isSuccessful()->willReturn(false); $process->getOutput()->shouldBeCalled(); $context->getFiles()->willReturn(new FilesCollection(array(new SplFileInfo('test.php', '.', 'test.php')))); $this->shouldThrow('GrumPHP\\Exception\\RuntimeException')->duringRun($context); }
function it_throws_exception_if_the_process_fails(ProcessBuilder $processBuilder, Process $process, ContextInterface $context) { $arguments = new ProcessArgumentsCollection(); $processBuilder->createArgumentsForCommand('composer')->willReturn($arguments); $processBuilder->buildProcess($arguments)->willReturn($process); $process->run()->shouldBeCalled(); $process->isSuccessful()->willReturn(false); $context->getFiles()->willReturn(new FilesCollection(array(new SplFileInfo('composer.json', '.', 'composer.json')))); $result = $this->run($context); $result->shouldBeAnInstanceOf('GrumPHP\\Runner\\TaskResultInterface'); $result->isPassed()->shouldBe(false); }
function it_throws_exception_if_the_process_is_successfull(GrumPHP $grumPHP, ProcessBuilder $processBuilder, Process $process, ContextInterface $context) { $grumPHP->getTaskConfiguration('git_blacklist')->willReturn(array('keywords' => array('var_dump('))); $arguments = new ProcessArgumentsCollection(); $processBuilder->createArgumentsForCommand('git')->willReturn($arguments); $processBuilder->buildProcess($arguments)->willReturn($process); $process->run()->shouldBeCalled(); $process->isSuccessful()->willReturn(true); $process->getOutput()->shouldBeCalled(); $context->getFiles()->willReturn(new FilesCollection(array(new SplFileInfo('file1.php', '.', 'file1.php')))); $this->shouldThrow('GrumPHP\\Exception\\RuntimeException')->duringRun($context); }
function it_throws_exception_if_the_process_fails(ProcessBuilder $processBuilder, Process $process, ContextInterface $context) { $arguments = new ProcessArgumentsCollection(); $processBuilder->createArgumentsForCommand('phing')->willReturn($arguments); $processBuilder->buildProcess($arguments)->willReturn($process); $process->run()->shouldBeCalled(); $process->isSuccessful()->willReturn(false); $context->getFiles()->willReturn(new FilesCollection([new SplFileInfo('test.php', '.', 'test.php')])); $result = $this->run($context); $result->shouldBeAnInstanceOf(TaskResultInterface::class); $result->isPassed()->shouldBe(false); }
function it_throws_exception_if_the_process_fails(XmlLinter $linter, ContextInterface $context) { $linter->isInstalled()->willReturn(true); $linter->setLoadFromNet(false)->shouldBeCalled(); $linter->setXInclude(false)->shouldBeCalled(); $linter->setDtdValidation(false)->shouldBeCalled(); $linter->setSchemeValidation(false)->shouldBeCalled(); $linter->lint(Argument::type('SplFileInfo'))->willReturn(new LintErrorsCollection([new XmlLintError(LintError::TYPE_ERROR, 0, 'error', 'file.xml', 1, 1)])); $context->getFiles()->willReturn(new FilesCollection([new SplFileInfo('file.xml', '.', 'file.xml')])); $result = $this->run($context); $result->shouldBeAnInstanceOf(TaskResultInterface::class); $result->isPassed()->shouldBe(false); }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('*.json'); if (0 === count($files)) { return; } $config = $this->getConfiguration(); $this->linter->setDetectKeyConflicts($config['detect_key_conflicts']); $lintErrors = $this->lint($files); if ($lintErrors->count()) { throw new RuntimeException($lintErrors->__toString()); } }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('*.php'); if (0 === count($files)) { return; } $config = $this->getConfiguration(); $this->processBuilder->setArguments(array($this->getCommandLocation(), '--format=json', '--dry-run')); if ($config['level']) { $this->processBuilder->add('--level=' . $config['level']); } if ($config['config']) { $this->processBuilder->add('--config=' . $config['config']); } if ($config['config_file']) { $this->processBuilder->add('--config-file' . $config['config-file']); } if ($config['verbose']) { $this->processBuilder->add('--verbose'); } if (count($config['fixers'])) { $this->processBuilder->add('--fixers=' . implode(',', $config['fixers'])); } $this->processBuilder->add('fix'); $messages = array(); $suggest = array('You can fix all errors by running following commands:'); $errorCount = 0; foreach ($files as $file) { $processBuilder = clone $this->processBuilder; $processBuilder->add($file); $process = $processBuilder->getProcess(); $process->run(); if (!$process->isSuccessful()) { $output = $process->getOutput(); $json = json_decode($output, true); if ($json) { if (isset($json['files'][0]['name']) && isset($json['files'][0]['appliedFixers'])) { $messages[] = sprintf('%s) %s (%s)', ++$errorCount, $json['files'][0]['name'], implode(',', $json['files'][0]['appliedFixers'])); } elseif (isset($json['files'][0]['name'])) { $messages[] = sprintf('%s) %s', ++$errorCount, $json['files'][0]['name']); } $suggest[] = str_replace(array("'--dry-run' ", "'--format=json' "), '', $process->getCommandLine()); } else { $messages[] = $output; } } } if (count($messages)) { throw new RuntimeException(implode("\n", $messages) . "\n" . "\n" . implode("\n", $suggest)); } }
function it_should_display_warning_of_non_blocking_failed_tasks(OutputInterface $output, TaskRunner $taskRunner, TaskInterface $task, ContextInterface $context) { $aTask = $task->getWrappedObject(); $aContext = $context->getWrappedObject(); $nonBlockingFailedTaskResult = TaskResult::createNonBlockingFailed($aTask, $aContext, 'non blocking task message'); $taskResults = new TaskResultCollection(); $taskResults->add($nonBlockingFailedTaskResult); $taskRunner->run($context)->willReturn($taskResults); $output->isDecorated()->willReturn(false); $output->getVerbosity()->willReturn(OutputInterface::VERBOSITY_NORMAL); $output->writeln(Argument::containingString('non blocking task message'))->shouldBeCalled(); $output->writeln(Argument::any())->shouldBeCalled(); $this->run($output, $context); }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $config = $this->getConfiguration(); $files = $context->getFiles(false)->extensions($config['triggered_by']); if (0 === count($files)) { return TaskResult::createSkipped($this, $context); } $this->parser->setParserOptions($config); $parseErrors = $this->parse($files); if ($parseErrors->count()) { return TaskResult::createFailed($this, $context, sprintf("Some errors occured while parsing your PHP files:\n%s", $parseErrors->__toString())); } return TaskResult::createPassed($this, $context); }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('/\\.(yaml|yml)$/i'); if (0 === count($files)) { return; } $config = $this->getConfiguration(); $this->linter->setObjectSupport($config['object_support']); $this->linter->setExceptionOnInvalidType($config['exception_on_invalid_type']); $lintErrors = $this->lint($files); if ($lintErrors->count()) { throw new RuntimeException($lintErrors->__toString()); } }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('*.php'); if (0 === count($files)) { return; } $config = $this->getConfiguration(); $arguments = $this->processBuilder->createArgumentsForCommand('phpunit'); $arguments->addOptionalArgument('--configuration=%s', $config['config_file']); $process = $this->processBuilder->buildProcess($arguments); $process->run(); if (!$process->isSuccessful()) { throw new RuntimeException($process->getOutput()); } }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('*.xml'); if (0 === count($files)) { return; } $config = $this->getConfiguration(); $this->linter->setLoadFromNet($config['load_from_net']); $this->linter->setXInclude($config['x_include']); $this->linter->setDtdValidation($config['dtd_validation']); $this->linter->setSchemeValidation($config['scheme_validation']); $lintErrors = $this->lint($files); if ($lintErrors->count()) { throw new RuntimeException($lintErrors->__toString()); } }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $config = $this->getConfiguration(); $files = $context->getFiles()->name(sprintf('/\\.(%s)$/i', implode('|', $config['triggered_by']))); if (0 === count($config['triggered_by']) || 0 === count($files)) { return; } $arguments = $this->processBuilder->createArgumentsForCommand('grunt'); $arguments->addOptionalArgument('--gruntfile=%s', $config['grunt_file']); $arguments->addOptionalArgument('%s', $config['task']); $process = $this->processBuilder->buildProcess($arguments); $process->run(); if (!$process->isSuccessful()) { throw new RuntimeException($process->getOutput()); } }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('*.php'); if (0 === count($files)) { return; } $config = $this->getConfiguration(); $arguments = ProcessArgumentsCollection::forExecutable($this->getCommandLocation()); $arguments->addOptionalArgument('--configuration=%s', $config['config_file']); $this->processBuilder->setArguments($arguments->getValues()); $process = $this->processBuilder->getProcess(); $process->run(); if (!$process->isSuccessful()) { throw new RuntimeException($process->getOutput()); } }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $files = $context->getFiles()->name('*.php'); if (0 === count($files)) { return TaskResult::createSkipped($this, $context); } $config = $this->getConfiguration(); $arguments = $this->processBuilder->createArgumentsForCommand('phpunit'); $arguments->addOptionalArgument('--configuration=%s', $config['config_file']); $process = $this->processBuilder->buildProcess($arguments); $process->run(); if (!$process->isSuccessful()) { return TaskResult::createFailed($this, $context, $this->formatter->format($process)); } return TaskResult::createPassed($this, $context); }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $config = $this->getConfiguration(); $files = $context->getFiles()->extensions($config['triggered_by']); $arguments = $this->processBuilder->createArgumentsForCommand('parallel-lint'); $arguments->add('--no-colors'); $arguments->addOptionalArgumentWithSeparatedValue('-j', $config['jobs']); $arguments->addArgumentArrayWithSeparatedValue('--exclude', $config['exclude']); $arguments->addFiles($files); $process = $this->processBuilder->buildProcess($arguments); $process->run(); if (!$process->isSuccessful()) { return TaskResult::createFailed($this, $context, $this->formatter->format($process)); } return TaskResult::createPassed($this, $context); }
/** * @param ContextInterface|GitCommitMsgContext $context */ public function run(ContextInterface $context) { $config = $this->getConfiguration(); $commitMessage = $context->getCommitMessage(); foreach ($config['matchers'] as $rule) { $regex = new Regex($rule); if ((bool) $config['case_insensitive']) { $regex->addPatternModifier('i'); } if ((bool) $config['multiline']) { $regex->addPatternModifier('m'); } if (!preg_match($regex->__toString(), $commitMessage)) { throw new RuntimeException(sprintf('The commit message does not match the rule: %s', $rule)); } } }
/** * {@inheritdoc} */ public function run(ContextInterface $context) { $config = $this->getConfiguration(); $files = $context->getFiles()->extensions($config['triggered_by']); if (0 === count($files)) { return TaskResult::createSkipped($this, $context); } $arguments = $this->processBuilder->createArgumentsForCommand('grunt'); $arguments->addOptionalArgument('--gruntfile=%s', $config['grunt_file']); $arguments->addOptionalArgument('%s', $config['task']); $process = $this->processBuilder->buildProcess($arguments); $process->run(); if (!$process->isSuccessful()) { return TaskResult::createFailed($this, $context, $this->formatter->format($process)); } return TaskResult::createPassed($this, $context); }