|
@@ -16,6 +16,8 @@ use Composer\Repository\ComposerRepository;
|
|
|
use Composer\IO\NullIO;
|
|
|
use Composer\Test\Mock\FactoryMock;
|
|
|
use Composer\Test\TestCase;
|
|
|
+use Composer\Package\Loader\ArrayLoader;
|
|
|
+use Composer\Package\Version\VersionParser;
|
|
|
|
|
|
class ComposerRepositoryTest extends TestCase
|
|
|
{
|
|
@@ -93,4 +95,74 @@ class ComposerRepositoryTest extends TestCase
|
|
|
),
|
|
|
);
|
|
|
}
|
|
|
+
|
|
|
+ public function testWhatProvides()
|
|
|
+ {
|
|
|
+ $repo = $this->getMockBuilder('Composer\Repository\ComposerRepository')
|
|
|
+ ->disableOriginalConstructor()
|
|
|
+ ->setMethods(array('fetchFile'))
|
|
|
+ ->getMock();
|
|
|
+
|
|
|
+ $cache = $this->getMockBuilder('Composer\Cache')->disableOriginalConstructor()->getMock();
|
|
|
+ $cache->expects($this->any())
|
|
|
+ ->method('sha256')
|
|
|
+ ->will($this->returnValue(false));
|
|
|
+
|
|
|
+ $properties = array(
|
|
|
+ 'cache' => $cache,
|
|
|
+ 'loader' => new ArrayLoader(),
|
|
|
+ 'providerListing' => array('p/a.json' => array('sha256' => 'xxx'))
|
|
|
+ );
|
|
|
+
|
|
|
+ foreach ($properties as $property => $value) {
|
|
|
+ $ref = new \ReflectionProperty($repo, $property);
|
|
|
+ $ref->setAccessible(true);
|
|
|
+ $ref->setValue($repo, $value);
|
|
|
+ }
|
|
|
+
|
|
|
+ $repo->expects($this->any())
|
|
|
+ ->method('fetchFile')
|
|
|
+ ->will($this->returnValue(array(
|
|
|
+ 'packages' => array(
|
|
|
+ array(array(
|
|
|
+ 'uid' => 1,
|
|
|
+ 'name' => 'a',
|
|
|
+ 'version' => 'dev-master',
|
|
|
+ 'extra' => array('branch-alias' => array('dev-master' => '1.0.x-dev')),
|
|
|
+ )),
|
|
|
+ array(array(
|
|
|
+ 'uid' => 2,
|
|
|
+ 'name' => 'a',
|
|
|
+ 'version' => 'dev-develop',
|
|
|
+ 'extra' => array('branch-alias' => array('dev-develop' => '1.1.x-dev')),
|
|
|
+ )),
|
|
|
+ array(array(
|
|
|
+ 'uid' => 3,
|
|
|
+ 'name' => 'a',
|
|
|
+ 'version' => '0.6',
|
|
|
+ )),
|
|
|
+ )
|
|
|
+ )));
|
|
|
+
|
|
|
+ $pool = $this->getMock('Composer\DependencyResolver\Pool');
|
|
|
+ $pool->expects($this->any())
|
|
|
+ ->method('isPackageAcceptable')
|
|
|
+ ->will($this->returnValue(true));
|
|
|
+
|
|
|
+ $versionParser = new VersionParser();
|
|
|
+ $repo->setRootAliases(array(
|
|
|
+ 'a' => array(
|
|
|
+ $versionParser->normalize('0.6') => array('alias' => 'dev-feature', 'alias_normalized' => $versionParser->normalize('dev-feature')),
|
|
|
+ $versionParser->normalize('1.1.x-dev') => array('alias' => '1.0', 'alias_normalized' => $versionParser->normalize('1.0')),
|
|
|
+ ),
|
|
|
+ ));
|
|
|
+
|
|
|
+ $packages = $repo->whatProvides($pool, 'a');
|
|
|
+
|
|
|
+ $this->assertCount(7, $packages);
|
|
|
+ $this->assertEquals(array('1', '1-alias', '2', '2-alias', '2-root', '3', '3-root'), array_keys($packages));
|
|
|
+ $this->assertInstanceOf('Composer\Package\AliasPackage', $packages['2-root']);
|
|
|
+ $this->assertSame($packages['2'], $packages['2-root']->getAliasOf());
|
|
|
+ $this->assertSame($packages['2'], $packages['2-alias']->getAliasOf());
|
|
|
+ }
|
|
|
}
|