mirror of
https://github.com/composer/composer
synced 2025-05-09 00:22:53 +00:00
Move construction of pool from repo set into a pool builder
Pool construction depends on the install request now, so only required packages get loaded, add some structure for future asynchronously loading composer repositories
This commit is contained in:
parent
4c7d271a36
commit
c0f19f6c57
20 changed files with 357 additions and 248 deletions
|
@ -22,90 +22,25 @@ class PoolTest extends TestCase
|
|||
public function testPool()
|
||||
{
|
||||
$pool = $this->createPool();
|
||||
$repo = new ArrayRepository;
|
||||
$package = $this->getPackage('foo', '1');
|
||||
|
||||
$repo->addPackage($package);
|
||||
$pool->addRepository($repo);
|
||||
$pool->setPackages(array($package));
|
||||
|
||||
$this->assertEquals(array($package), $pool->whatProvides('foo'));
|
||||
$this->assertEquals(array($package), $pool->whatProvides('foo'));
|
||||
}
|
||||
|
||||
public function testPoolIgnoresIrrelevantPackages()
|
||||
{
|
||||
$pool = new Pool(array('stable' => BasePackage::STABILITY_STABLE), array('bar' => BasePackage::STABILITY_BETA));
|
||||
$repo = new ArrayRepository;
|
||||
$repo->addPackage($package = $this->getPackage('bar', '1'));
|
||||
$repo->addPackage($betaPackage = $this->getPackage('bar', '1-beta'));
|
||||
$repo->addPackage($alphaPackage = $this->getPackage('bar', '1-alpha'));
|
||||
$repo->addPackage($package2 = $this->getPackage('foo', '1'));
|
||||
$repo->addPackage($rcPackage2 = $this->getPackage('foo', '1rc'));
|
||||
|
||||
$pool->addRepository($repo);
|
||||
|
||||
$this->assertEquals(array($package, $betaPackage), $pool->whatProvides('bar'));
|
||||
$this->assertEquals(array($package2), $pool->whatProvides('foo'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
*/
|
||||
public function testGetPriorityForNotRegisteredRepository()
|
||||
{
|
||||
$pool = $this->createPool();
|
||||
$repository = new ArrayRepository;
|
||||
|
||||
$pool->getPriority($repository);
|
||||
}
|
||||
|
||||
public function testGetPriorityWhenRepositoryIsRegistered()
|
||||
{
|
||||
$pool = $this->createPool();
|
||||
$firstRepository = new ArrayRepository;
|
||||
$pool->addRepository($firstRepository);
|
||||
$secondRepository = new ArrayRepository;
|
||||
$pool->addRepository($secondRepository);
|
||||
|
||||
$firstPriority = $pool->getPriority($firstRepository);
|
||||
$secondPriority = $pool->getPriority($secondRepository);
|
||||
|
||||
$this->assertEquals(0, $firstPriority);
|
||||
$this->assertEquals(-1, $secondPriority);
|
||||
}
|
||||
|
||||
public function testWhatProvidesSamePackageForDifferentRepositories()
|
||||
{
|
||||
$pool = $this->createPool();
|
||||
$firstRepository = new ArrayRepository;
|
||||
$secondRepository = new ArrayRepository;
|
||||
|
||||
$firstPackage = $this->getPackage('foo', '1');
|
||||
$secondPackage = $this->getPackage('foo', '1');
|
||||
$thirdPackage = $this->getPackage('foo', '2');
|
||||
|
||||
$firstRepository->addPackage($firstPackage);
|
||||
$secondRepository->addPackage($secondPackage);
|
||||
$secondRepository->addPackage($thirdPackage);
|
||||
|
||||
$pool->addRepository($firstRepository);
|
||||
$pool->addRepository($secondRepository);
|
||||
|
||||
$this->assertEquals(array($firstPackage, $secondPackage, $thirdPackage), $pool->whatProvides('foo'));
|
||||
}
|
||||
|
||||
public function testWhatProvidesPackageWithConstraint()
|
||||
{
|
||||
$pool = $this->createPool();
|
||||
$repository = new ArrayRepository;
|
||||
|
||||
$firstPackage = $this->getPackage('foo', '1');
|
||||
$secondPackage = $this->getPackage('foo', '2');
|
||||
|
||||
$repository->addPackage($firstPackage);
|
||||
$repository->addPackage($secondPackage);
|
||||
|
||||
$pool->addRepository($repository);
|
||||
$pool->setPackages(array(
|
||||
$firstPackage,
|
||||
$secondPackage,
|
||||
));
|
||||
|
||||
$this->assertEquals(array($firstPackage, $secondPackage), $pool->whatProvides('foo'));
|
||||
$this->assertEquals(array($secondPackage), $pool->whatProvides('foo', $this->getVersionConstraint('==', '2')));
|
||||
|
@ -114,11 +49,9 @@ class PoolTest extends TestCase
|
|||
public function testPackageById()
|
||||
{
|
||||
$pool = $this->createPool();
|
||||
$repository = new ArrayRepository;
|
||||
$package = $this->getPackage('foo', '1');
|
||||
|
||||
$repository->addPackage($package);
|
||||
$pool->addRepository($repository);
|
||||
$pool->setPackages(array($package));
|
||||
|
||||
$this->assertSame($package, $pool->packageById(1));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue