mirror of
https://github.com/composer/composer
synced 2025-05-09 00:22:53 +00:00
Add a Composer\Versions class which is available in all projects at runtime to query installed packages/versions
This commit is contained in:
parent
c757c9fa37
commit
0d1922dc27
29 changed files with 774 additions and 82 deletions
|
@ -14,6 +14,7 @@ namespace Composer\Test\Repository;
|
|||
|
||||
use Composer\Repository\FilesystemRepository;
|
||||
use Composer\Test\TestCase;
|
||||
use Composer\Json\JsonFile;
|
||||
|
||||
class FilesystemRepositoryTest extends TestCase
|
||||
{
|
||||
|
@ -113,6 +114,50 @@ class FilesystemRepositoryTest extends TestCase
|
|||
$repository->write(true, $im);
|
||||
}
|
||||
|
||||
public function testRepositoryWritesInstalledPhp()
|
||||
{
|
||||
$dir = $this->getUniqueTmpDirectory();
|
||||
$json = new JsonFile($dir.'/installed.json');
|
||||
|
||||
$rootPackage = $this->getPackage('__root__', 'dev-master', 'Composer\Package\RootPackage');
|
||||
$rootPackage->setSourceReference('sourceref-by-default');
|
||||
$rootPackage->setDistReference('distref');
|
||||
$this->configureLinks($rootPackage, array('provide' => array('foo/impl' => '2.0')));
|
||||
$rootPackage = $this->getAliasPackage($rootPackage, '1.10.x-dev');
|
||||
|
||||
$repository = new FilesystemRepository($json, true, $rootPackage);
|
||||
$pkg = $this->getPackage('a/provider', '1.1');
|
||||
$this->configureLinks($pkg, array('provide' => array('foo/impl' => '^1.1', 'foo/impl2' => '2.0')));
|
||||
$pkg->setDistReference('distref-as-no-source');
|
||||
$repository->addPackage($pkg);
|
||||
|
||||
$pkg = $this->getPackage('a/provider2', '1.2');
|
||||
$this->configureLinks($pkg, array('provide' => array('foo/impl' => 'self.version', 'foo/impl2' => '2.0')));
|
||||
$pkg->setSourceReference('sourceref');
|
||||
$pkg->setDistReference('distref-as-installed-from-dist');
|
||||
$pkg->setInstallationSource('dist');
|
||||
$repository->addPackage($pkg);
|
||||
|
||||
$repository->addPackage($this->getAliasPackage($pkg, '1.4'));
|
||||
|
||||
$pkg = $this->getPackage('b/replacer', '2.2');
|
||||
$this->configureLinks($pkg, array('replace' => array('foo/impl2' => 'self.version', 'foo/replaced' => '^3.0')));
|
||||
$repository->addPackage($pkg);
|
||||
|
||||
$pkg = $this->getPackage('c/c', '3.0');
|
||||
$repository->addPackage($pkg);
|
||||
|
||||
$im = $this->getMockBuilder('Composer\Installer\InstallationManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$im->expects($this->any())
|
||||
->method('getInstallPath')
|
||||
->will($this->returnValue('/foo/bar/vendor/woop/woop'));
|
||||
|
||||
$repository->write(true, $im);
|
||||
$this->assertSame(require __DIR__.'/Fixtures/installed.php', require $dir.'/installed.php');
|
||||
}
|
||||
|
||||
private function createJsonFileMock()
|
||||
{
|
||||
return $this->getMockBuilder('Composer\Json\JsonFile')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue