public function testGetViolations()
 {
     $violation = $this->prophesize('SensioLabs\\DeprecationDetector\\Violation\\Violation')->reveal();
     $filteredViolation = $this->prophesize('SensioLabs\\DeprecationDetector\\Violation\\Violation')->reveal();
     $expected = array($violation);
     $phpFileInfo = $this->prophesize('SensioLabs\\DeprecationDetector\\FileInfo\\PhpFileInfo')->reveal();
     $ruleSet = $this->prophesize('SensioLabs\\DeprecationDetector\\RuleSet\\RuleSet')->reveal();
     $violationChecker = $this->prophesize('SensioLabs\\DeprecationDetector\\Violation\\ViolationChecker\\ViolationCheckerInterface');
     $violationChecker->check($phpFileInfo, $ruleSet)->willReturn(array($violation, $filteredViolation))->shouldBeCalled();
     $violationFilter = $this->prophesize('SensioLabs\\DeprecationDetector\\Violation\\ViolationFilter\\ViolationFilterInterface');
     $violationFilter->isViolationFiltered($violation)->willReturn(false)->shouldBeCalled();
     $violationFilter->isViolationFiltered($filteredViolation)->willReturn(true)->shouldBeCalled();
     $violationDetector = new ViolationDetector($violationChecker->reveal(), $violationFilter->reveal());
     $this->assertEquals($expected, $violationDetector->getViolations($ruleSet, array($phpFileInfo)));
 }
 /**
  * @param string $sourceArg
  * @param string $ruleSetArg
  *
  * @return Violation[]
  *
  * @throws \Exception
  */
 public function checkForDeprecations($sourceArg, $ruleSetArg)
 {
     $this->output->startProgress();
     $this->output->startRuleSetGeneration();
     $ruleSet = $this->ruleSetLoader->loadRuleSet($ruleSetArg);
     $ruleSet->merge($this->preDefinedRuleSet);
     $this->output->endRuleSetGeneration();
     $this->output->startUsageDetection();
     // TODO: Move to AncestorResolver not hard coded
     $lib = is_dir($ruleSetArg) ? $ruleSetArg : realpath('vendor');
     $this->ancestorResolver->setSourcePaths(array($sourceArg, $lib));
     $result = $this->deprecationFinder->parsePhpFiles($sourceArg);
     $violations = $this->violationDetector->getViolations($ruleSet, $result->parsedFiles());
     $this->output->endUsageDetection();
     $this->output->startOutputRendering();
     $this->renderer->renderViolations($violations, $result->parserErrors());
     $this->output->endOutputRendering();
     $this->output->endProgress($result->fileCount(), count($violations));
     return $violations;
 }