public function testFindPackages()
 {
     $repo = new ArrayRepository();
     $repo->addPackage($this->getPackage('foo', '1'));
     $repo->addPackage($this->getPackage('bar', '2'));
     $repo->addPackage($this->getPackage('bar', '3'));
     $foo = $repo->findPackages('foo');
     $this->assertCount(1, $foo);
     $this->assertEquals('foo', $foo[0]->getName());
     $bar = $repo->findPackages('bar');
     $this->assertCount(2, $bar);
     $this->assertEquals('bar', $bar[0]->getName());
 }
 /**
  * {@inheritDoc}
  */
 public function findPackages($name, $constraint = null)
 {
     if (!$this->hasProviders()) {
         return parent::findPackages($name, $constraint);
     }
     // normalize name
     $name = strtolower($name);
     if (null !== $constraint && !$constraint instanceof ConstraintInterface) {
         $versionParser = new VersionParser();
         $constraint = $versionParser->parseConstraints($constraint);
     }
     $packages = array();
     foreach ($this->getProviderNames() as $providerName) {
         if ($name === $providerName) {
             $candidates = $this->whatProvides(new Pool('dev'), $providerName);
             foreach ($candidates as $package) {
                 if ($name === $package->getName()) {
                     $pkgConstraint = new Constraint('==', $package->getVersion());
                     if (null === $constraint || $constraint->matches($pkgConstraint)) {
                         $packages[] = $package;
                     }
                 }
             }
             break;
         }
     }
     return $packages;
 }
Exemple #3
0
 public function findPackages($name, $version = null)
 {
     if (!$this->hasProviders()) {
         return parent::findPackages($name, $version);
     }
     $name = strtolower($name);
     if (null !== $version) {
         $versionParser = new VersionParser();
         $version = $versionParser->normalize($version);
     }
     $packages = array();
     foreach ($this->getProviderNames() as $providerName) {
         if ($name === $providerName) {
             $packages = $this->whatProvides(new Pool('dev'), $providerName);
             foreach ($packages as $package) {
                 if ($name == $package->getName() && (null === $version || $version === $package->getVersion())) {
                     $packages[] = $package;
                 }
             }
         }
     }
     return $packages;
 }