1
0
Fork 0
mirror of https://github.com/composer/composer synced 2025-05-09 00:22:53 +00:00

Load installed plugins at appropriate time and adapt tests accordingly

This commit is contained in:
Nils Adermann 2013-08-13 19:13:17 +02:00
parent 3e41977be7
commit 2f43e9aefb
9 changed files with 122 additions and 119 deletions

View file

@ -42,14 +42,6 @@ class PluginInstallerTest extends \PHPUnit_Framework_TestCase
->disableOriginalConstructor()
->getMock();
$this->im = $this->getMockBuilder('Composer\Installer\InstallationManager')
->disableOriginalConstructor()
->getMock();
$this->pm = $this->getMockBuilder('Composer\Plugin\PluginManager')
->disableOriginalConstructor()
->getMock();
$this->repository = $this->getMock('Composer\Repository\InstalledRepositoryInterface');
$rm = $this->getMockBuilder('Composer\Repository\RepositoryManager')
@ -68,11 +60,12 @@ class PluginInstallerTest extends \PHPUnit_Framework_TestCase
$config = new Config();
$this->composer->setConfig($config);
$this->composer->setDownloadManager($dm);
$this->composer->setInstallationManager($this->im);
$this->composer->setPluginManager($this->pm);
$this->composer->setRepositoryManager($rm);
$this->composer->setAutoloadGenerator($this->autoloadGenerator);
$this->pm = new \Composer\Plugin\PluginManager($this->composer, $this->io);
$this->composer->setPluginManager($this->pm);
$config->merge(array(
'config' => array(
'vendor-dir' => __DIR__.'/Fixtures/',
@ -87,17 +80,13 @@ class PluginInstallerTest extends \PHPUnit_Framework_TestCase
->expects($this->once())
->method('getPackages')
->will($this->returnValue(array()));
$installer = new PluginInstallerMock($this->io, $this->composer);
$test = $this;
$this->pm
->expects($this->once())
->method('addPlugin')
->will($this->returnCallback(function ($installer) use ($test) {
$test->assertEquals('installer-v1', $installer->version);
}));
$installer = new PluginInstaller($this->io, $this->composer);
$this->pm->loadInstalledPlugins();
$installer->install($this->repository, $this->packages[0]);
$plugins = $this->pm->getPlugins();
$this->assertEquals('installer-v1', $plugins[0]->version);
}
public function testInstallMultiplePlugins()
@ -106,28 +95,16 @@ class PluginInstallerTest extends \PHPUnit_Framework_TestCase
->expects($this->once())
->method('getPackages')
->will($this->returnValue(array()));
$installer = new PluginInstallerMock($this->io, $this->composer);
$test = $this;
$this->pm
->expects($this->at(0))
->method('addPlugin')
->will($this->returnCallback(function ($plugin) use ($test) {
$test->assertEquals('plugin1', $plugin->name);
$test->assertEquals('installer-v4', $plugin->version);
}));
$this->pm
->expects($this->at(1))
->method('addPlugin')
->will($this->returnCallback(function ($plugin) use ($test) {
$test->assertEquals('plugin2', $plugin->name);
$test->assertEquals('installer-v4', $plugin->version);
}));
$installer = new PluginInstaller($this->io, $this->composer);
$this->pm->loadInstalledPlugins();
$installer->install($this->repository, $this->packages[3]);
$plugins = $this->pm->getPlugins();
$this->assertEquals('plugin1', $plugins[0]->name);
$this->assertEquals('installer-v4', $plugins[0]->version);
$this->assertEquals('plugin2', $plugins[1]->name);
$this->assertEquals('installer-v4', $plugins[1]->version);
}
public function testUpgradeWithNewClassName()
@ -140,17 +117,13 @@ class PluginInstallerTest extends \PHPUnit_Framework_TestCase
->expects($this->exactly(2))
->method('hasPackage')
->will($this->onConsecutiveCalls(true, false));
$installer = new PluginInstallerMock($this->io, $this->composer);
$test = $this;
$this->pm
->expects($this->once())
->method('addPlugin')
->will($this->returnCallback(function ($plugin) use ($test) {
$test->assertEquals('installer-v2', $plugin->version);
}));
$installer = new PluginInstaller($this->io, $this->composer);
$this->pm->loadInstalledPlugins();
$installer->update($this->repository, $this->packages[0], $this->packages[1]);
$plugins = $this->pm->getPlugins();
$this->assertEquals('installer-v2', $plugins[1]->version);
}
public function testUpgradeWithSameClassName()
@ -163,26 +136,13 @@ class PluginInstallerTest extends \PHPUnit_Framework_TestCase
->expects($this->exactly(2))
->method('hasPackage')
->will($this->onConsecutiveCalls(true, false));
$installer = new PluginInstallerMock($this->io, $this->composer);
$test = $this;
$this->pm
->expects($this->once())
->method('addPlugin')
->will($this->returnCallback(function ($plugin) use ($test) {
$test->assertEquals('installer-v3', $plugin->version);
}));
$installer = new PluginInstaller($this->io, $this->composer);
$this->pm->loadInstalledPlugins();
$installer->update($this->repository, $this->packages[1], $this->packages[2]);
$plugins = $this->pm->getPlugins();
$this->assertEquals('installer-v3', $plugins[1]->version);
}
}
class PluginInstallerMock extends PluginInstaller
{
public function getInstallPath(PackageInterface $package)
{
$version = $package->getVersion();
return __DIR__.'/Fixtures/plugin-v'.$version[0].'/';
}
}