1
0
Fork 0
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:
Jordi Boggiano 2020-04-19 16:00:21 +02:00
parent c757c9fa37
commit 0d1922dc27
No known key found for this signature in database
GPG key ID: 7BBD42C429EC80BC
29 changed files with 774 additions and 82 deletions

View file

@ -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')