2011-09-25 17:59:10 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This file is part of Composer.
|
|
|
|
*
|
|
|
|
* (c) Nils Adermann <naderman@naderman.de>
|
|
|
|
* Jordi Boggiano <j.boggiano@seld.be>
|
|
|
|
*
|
|
|
|
* For the full copyright and license information, please view the LICENSE
|
|
|
|
* file that was distributed with this source code.
|
|
|
|
*/
|
|
|
|
|
2016-10-05 08:45:22 +00:00
|
|
|
namespace Composer\Test\Repository;
|
2011-09-25 17:59:10 +00:00
|
|
|
|
2016-10-05 08:45:22 +00:00
|
|
|
use Composer\Repository\FilesystemRepository;
|
2018-11-12 14:23:32 +00:00
|
|
|
use Composer\Test\TestCase;
|
2011-09-25 17:59:10 +00:00
|
|
|
|
2011-11-20 14:06:12 +00:00
|
|
|
class FilesystemRepositoryTest extends TestCase
|
2011-09-25 17:59:10 +00:00
|
|
|
{
|
2011-10-01 13:01:33 +00:00
|
|
|
public function testRepositoryRead()
|
2011-09-25 17:59:10 +00:00
|
|
|
{
|
2011-10-01 13:01:33 +00:00
|
|
|
$json = $this->createJsonFileMock();
|
|
|
|
|
|
|
|
$repository = new FilesystemRepository($json);
|
|
|
|
|
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('read')
|
|
|
|
->will($this->returnValue(array(
|
2015-09-28 09:51:14 +00:00
|
|
|
array('name' => 'package1', 'version' => '1.0.0-beta', 'type' => 'vendor'),
|
2011-10-01 13:01:33 +00:00
|
|
|
)));
|
2011-10-02 18:18:57 +00:00
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('exists')
|
|
|
|
->will($this->returnValue(true));
|
2011-10-01 13:01:33 +00:00
|
|
|
|
|
|
|
$packages = $repository->getPackages();
|
2011-09-25 17:59:10 +00:00
|
|
|
|
2017-11-30 14:58:10 +00:00
|
|
|
$this->assertCount(1, $packages);
|
2011-10-01 13:01:33 +00:00
|
|
|
$this->assertSame('package1', $packages[0]->getName());
|
|
|
|
$this->assertSame('1.0.0.0-beta', $packages[0]->getVersion());
|
|
|
|
$this->assertSame('vendor', $packages[0]->getType());
|
2011-09-25 17:59:10 +00:00
|
|
|
}
|
|
|
|
|
2011-10-30 08:09:46 +00:00
|
|
|
/**
|
2016-01-21 12:01:55 +00:00
|
|
|
* @expectedException \Composer\Repository\InvalidRepositoryException
|
2011-10-30 08:09:46 +00:00
|
|
|
*/
|
|
|
|
public function testCorruptedRepositoryFile()
|
|
|
|
{
|
|
|
|
$json = $this->createJsonFileMock();
|
|
|
|
|
|
|
|
$repository = new FilesystemRepository($json);
|
|
|
|
|
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('read')
|
|
|
|
->will($this->returnValue('foo'));
|
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('exists')
|
|
|
|
->will($this->returnValue(true));
|
|
|
|
|
|
|
|
$repository->getPackages();
|
|
|
|
}
|
|
|
|
|
2011-10-30 08:10:49 +00:00
|
|
|
public function testUnexistentRepositoryFile()
|
|
|
|
{
|
|
|
|
$json = $this->createJsonFileMock();
|
|
|
|
|
|
|
|
$repository = new FilesystemRepository($json);
|
|
|
|
|
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('exists')
|
|
|
|
->will($this->returnValue(false));
|
|
|
|
|
|
|
|
$this->assertEquals(array(), $repository->getPackages());
|
|
|
|
}
|
|
|
|
|
2011-10-01 13:01:33 +00:00
|
|
|
public function testRepositoryWrite()
|
2011-09-25 17:59:10 +00:00
|
|
|
{
|
2011-10-01 13:01:33 +00:00
|
|
|
$json = $this->createJsonFileMock();
|
2011-09-25 17:59:10 +00:00
|
|
|
|
2011-10-01 13:01:33 +00:00
|
|
|
$repository = new FilesystemRepository($json);
|
2019-08-02 19:39:26 +00:00
|
|
|
$im = $this->getMockBuilder('Composer\Installer\InstallationManager')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
|
|
|
$im->expects($this->once())
|
|
|
|
->method('getInstallPath')
|
|
|
|
->will($this->returnValue('/foo/bar/vendor/woop/woop'));
|
2011-09-25 17:59:10 +00:00
|
|
|
|
2011-10-01 13:01:33 +00:00
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('read')
|
|
|
|
->will($this->returnValue(array()));
|
2019-08-02 19:39:26 +00:00
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('getPath')
|
|
|
|
->will($this->returnValue('/foo/bar/vendor/composer/installed.json'));
|
2011-10-02 18:18:57 +00:00
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('exists')
|
|
|
|
->will($this->returnValue(true));
|
2011-10-01 13:01:33 +00:00
|
|
|
$json
|
|
|
|
->expects($this->once())
|
|
|
|
->method('write')
|
|
|
|
->with(array(
|
2019-08-02 19:39:26 +00:00
|
|
|
'packages' => array(array('name' => 'mypkg', 'type' => 'library', 'version' => '0.1.10', 'version_normalized' => '0.1.10.0', 'install-path' => '../woop/woop')),
|
2019-02-21 11:27:02 +00:00
|
|
|
'dev' => true,
|
2011-10-01 13:01:33 +00:00
|
|
|
));
|
2011-09-25 17:59:10 +00:00
|
|
|
|
2011-11-20 14:06:12 +00:00
|
|
|
$repository->addPackage($this->getPackage('mypkg', '0.1.10'));
|
2019-08-02 19:39:26 +00:00
|
|
|
$repository->write(true, $im);
|
2011-10-01 13:01:33 +00:00
|
|
|
}
|
2011-09-25 17:59:10 +00:00
|
|
|
|
2011-10-01 13:01:33 +00:00
|
|
|
private function createJsonFileMock()
|
|
|
|
{
|
|
|
|
return $this->getMockBuilder('Composer\Json\JsonFile')
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
2011-09-25 17:59:10 +00:00
|
|
|
}
|
|
|
|
}
|