Fix ComposerRepo issue
parent
f91859ceff
commit
40f5806a7c
|
@ -242,11 +242,15 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito
|
|||
return array_values($this->loadAsyncPackages($packageMap));
|
||||
}
|
||||
|
||||
throw new \LogicException('Composer repositories that have lazy providers and no available-packages list can not load the complete list of packages, use getProviderNames instead.');
|
||||
if ($this->hasPartialPackages()) {
|
||||
return array_values($this->partialPackagesByName);
|
||||
}
|
||||
|
||||
throw new \LogicException('Composer repositories that have lazy providers and no available-packages list can not load the complete list of packages, use getPackageNames instead.');
|
||||
}
|
||||
|
||||
if ($hasProviders) {
|
||||
throw new \LogicException('Composer repositories that have providers can not load the complete list of packages, use getProviderNames instead.');
|
||||
throw new \LogicException('Composer repositories that have providers can not load the complete list of packages, use getPackageNames instead.');
|
||||
}
|
||||
|
||||
return parent::getPackages();
|
||||
|
@ -263,6 +267,11 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito
|
|||
}
|
||||
|
||||
// TODO implement new list API endpoint for those repos somehow?
|
||||
|
||||
if ($this->hasPartialPackages()) {
|
||||
return array_keys($this->partialPackagesByName);
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
|
@ -391,14 +400,6 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito
|
|||
$this->loadProviderListings($this->loadRootServerFile());
|
||||
}
|
||||
|
||||
if ($this->hasPartialPackages) {
|
||||
if (null === $this->partialPackagesByName) {
|
||||
$this->initializePartialPackages();
|
||||
}
|
||||
|
||||
return array_keys($this->partialPackagesByName);
|
||||
}
|
||||
|
||||
if ($this->lazyProvidersUrl) {
|
||||
// Can not determine list of provided packages for lazy repositories
|
||||
return array();
|
||||
|
|
|
@ -286,30 +286,28 @@ class ComposerRepositoryTest extends TestCase
|
|||
|
||||
public function testGetProviderNamesWillReturnPartialPackageNames()
|
||||
{
|
||||
$rfs = $this->getMockBuilder('Composer\Util\RemoteFilesystem')
|
||||
$httpDownloader = $this->getMockBuilder('Composer\Util\HttpDownloader')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$rfs->expects($this->at(0))
|
||||
->method('getContents')
|
||||
->with('example.org', 'http://example.org/packages.json', false)
|
||||
->willReturn(json_encode(array(
|
||||
$httpDownloader->expects($this->at(0))
|
||||
->method('get')
|
||||
->with($url = 'http://example.org/packages.json')
|
||||
->willReturn(new \Composer\Util\Http\Response(array('url' => $url), 200, array(), json_encode(array(
|
||||
'providers-lazy-url' => '/foo/p/%package%.json',
|
||||
'packages' => array('foo/bar' => array(
|
||||
'dev-branch' => array(),
|
||||
'v1.0.0' => array(),
|
||||
'dev-branch' => array('name' => 'foo/bar'),
|
||||
'v1.0.0' => array('name' => 'foo/bar'),
|
||||
))
|
||||
)));
|
||||
))));
|
||||
|
||||
$repository = new ComposerRepository(
|
||||
array('url' => 'http://example.org/packages.json'),
|
||||
new NullIO(),
|
||||
FactoryMock::createConfig(),
|
||||
null,
|
||||
$rfs
|
||||
$httpDownloader
|
||||
);
|
||||
|
||||
$this->assertTrue($repository->hasProviders());
|
||||
$this->assertEquals(array('foo/bar'), $repository->getProviderNames());
|
||||
$this->assertEquals(array('foo/bar'), $repository->getPackageNames());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue