Example #1
0
 /**
  * {@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);
 }
Example #3
0
 /**
  * {@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);
 }
Example #4
0
 /**
  * {@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());
     }
 }
Example #5
0
 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);
 }
Example #7
0
 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);
 }
Example #8
0
 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);
 }
Example #9
0
 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);
 }
Example #10
0
 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);
 }
Example #11
0
 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);
 }
Example #12
0
 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);
 }
Example #13
0
 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);
 }
Example #14
0
 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);
 }
Example #15
0
 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);
 }
Example #16
0
 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);
 }
Example #17
0
 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);
 }
Example #18
0
 /**
  * {@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());
     }
 }
Example #19
0
 /**
  * {@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);
 }
Example #21
0
 /**
  * {@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);
 }
Example #22
0
 /**
  * {@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());
     }
 }
Example #23
0
 /**
  * {@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());
     }
 }
Example #24
0
 /**
  * {@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());
     }
 }
Example #25
0
 /**
  * {@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());
     }
 }
Example #26
0
 /**
  * {@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());
     }
 }
Example #27
0
 /**
  * {@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);
 }
Example #28
0
 /**
  * {@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);
 }
Example #29
0
 /**
  * @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));
         }
     }
 }
Example #30
0
 /**
  * {@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);
 }