/**
  * {@inheritdoc}
  */
 public function loadRuleSet($path)
 {
     $key = $this->generateDirectoryKey($path);
     if ($this->cache->has($key)) {
         return $this->cache->getCachedRuleSet($key);
     }
     $ruleSet = $this->traverser->traverse($path);
     $this->cache->cacheRuleSet($key, $ruleSet);
     return $ruleSet;
 }
 /**
  * @param Package $package
  *
  * @return RuleSet
  */
 private function loadPackageRuleSet(Package $package)
 {
     $ruleSet = new RuleSet();
     $key = $package->generatePackageKey();
     if ($this->cache->has($key)) {
         $ruleSet = $this->cache->getCachedRuleSet($key);
     } elseif (is_dir($path = $package->getPackagePath(self::PACKAGE_PATH))) {
         $ruleSet = $this->traverser->traverse($path);
         $this->cache->cacheRuleSet($key, $ruleSet);
     } else {
         // there is no vendor package in the given path
     }
     return $ruleSet;
 }
 public function testTraverse()
 {
     $aPhpFileInfo = $this->prophesize('SensioLabs\\DeprecationDetector\\FileInfo\\PhpFileInfo');
     $aPhpFileInfo->hasDeprecations()->willReturn(true);
     $aPhpFileInfo->classDeprecations()->willReturn(array());
     $aPhpFileInfo->methodDeprecations()->willReturn(array());
     $aPhpFileInfo->interfaceDeprecations()->willReturn(array());
     $anotherPhpFileInfo = $this->prophesize('SensioLabs\\DeprecationDetector\\FileInfo\\PhpFileInfo');
     $anotherPhpFileInfo->hasDeprecations()->willReturn(false);
     $deprecationFileFinder = $this->prophesize('SensioLabs\\DeprecationDetector\\Finder\\ParsedPhpFileFinder');
     $deprecationFileFinder->in('some_dir')->willReturn(array($aPhpFileInfo->reveal(), $anotherPhpFileInfo->reveal()));
     $ruleSet = $this->prophesize('SensioLabs\\DeprecationDetector\\RuleSet\\RuleSet');
     $ruleSet->merge($aPhpFileInfo->reveal())->shouldBeCalled();
     $ruleSet->merge($anotherPhpFileInfo->reveal())->shouldNotBeCalled();
     $directoryTraverser = new DirectoryTraverser($deprecationFileFinder->reveal());
     $directoryTraverser->traverse('some_dir', $ruleSet->reveal());
 }
 /**
  * @param $package
  *
  * @return RuleSet
  */
 private function loadPackageRuleSet(\stdClass $package)
 {
     $ruleSet = null;
     $key = $this->generatePackageKey($package);
     if ($this->cache->has($key)) {
         $ruleSet = $this->cache->getCachedRuleSet($key);
     } elseif (is_dir($path = $this->getPackagePath($package))) {
         $ruleSet = $this->traverser->traverse($path);
         $this->cache->cacheRuleSet($key, $ruleSet);
     }
     return $ruleSet;
 }