/** * @dataProvider provideInstaller */ public function testInstaller(PackageInterface $rootPackage, $repositories, array $options) { $io = $this->getMock('Composer\\IO\\IOInterface'); $downloadManager = $this->getMock('Composer\\Downloader\\DownloadManager'); $config = $this->getMock('Composer\\Config'); $repositoryManager = new RepositoryManager($io, $config); $repositoryManager->setLocalRepository(new WritableRepositoryMock()); $repositoryManager->setLocalDevRepository(new WritableRepositoryMock()); if (!is_array($repositories)) { $repositories = array($repositories); } foreach ($repositories as $repository) { $repositoryManager->addRepository($repository); } $locker = $this->getMockBuilder('Composer\\Package\\Locker')->disableOriginalConstructor()->getMock(); $installationManager = new InstallationManagerMock(); $eventDispatcher = $this->getMockBuilder('Composer\\Script\\EventDispatcher')->disableOriginalConstructor()->getMock(); $autoloadGenerator = $this->getMock('Composer\\Autoload\\AutoloadGenerator'); $installer = new Installer($io, $config, clone $rootPackage, $downloadManager, $repositoryManager, $locker, $installationManager, $eventDispatcher, $autoloadGenerator); $result = $installer->run(); $this->assertTrue($result); $expectedInstalled = isset($options['install']) ? $options['install'] : array(); $expectedUpdated = isset($options['update']) ? $options['update'] : array(); $expectedUninstalled = isset($options['uninstall']) ? $options['uninstall'] : array(); $installed = $installationManager->getInstalledPackages(); $this->assertSame($expectedInstalled, $installed); $updated = $installationManager->getUpdatedPackages(); $this->assertSame($expectedUpdated, $updated); $uninstalled = $installationManager->getUninstalledPackages(); $this->assertSame($expectedUninstalled, $uninstalled); }
protected function setUp() { $this->tempDir = TestUtil::makeTempDir('puli-composer-plugin', __CLASS__); $filesystem = new Filesystem(); $filesystem->mirror(__DIR__ . '/Fixtures/root', $this->tempDir); $this->io = $this->getMock('Composer\\IO\\IOInterface'); $this->config = new Config(false, $this->tempDir); $this->config->merge(array('config' => array('vendor-dir' => 'the-vendor'))); $this->installationManager = $this->getMockBuilder('Composer\\Installer\\InstallationManager')->disableOriginalConstructor()->getMock(); $this->installationManager->expects($this->any())->method('getInstallPath')->will($this->returnCallback(array($this, 'getInstallPath'))); $this->rootPackage = new RootPackage('vendor/root', '1.0', '1.0'); $this->rootPackage->setRequires(array('vendor/package1' => new Link('vendor/root', 'vendor/package1'), 'vendor/package2' => new Link('vendor/root', 'vendor/package2'))); $this->localRepository = new TestLocalRepository(array(new Package('vendor/package1', '1.0', '1.0'), new Package('vendor/package2', '1.0', '1.0'))); $this->repositoryManager = new RepositoryManager($this->io, $this->config); $this->repositoryManager->setLocalRepository($this->localRepository); $this->installPaths = array(); $this->composer = new Composer(); $this->composer->setRepositoryManager($this->repositoryManager); $this->composer->setInstallationManager($this->installationManager); $this->composer->setConfig($this->config); $this->composer->setPackage($this->rootPackage); $this->puliRunner = $this->getMockBuilder('Puli\\ComposerPlugin\\PuliRunner')->disableOriginalConstructor()->getMock(); $this->previousWd = getcwd(); chdir($this->tempDir); $this->plugin = new PuliPlugin($this->puliRunner); }
protected function setUp() { while (false === mkdir($this->tempDir = sys_get_temp_dir() . '/puli-plugin/PuliPluginTest_root' . rand(10000, 99999), 0777, true)) { } $filesystem = new Filesystem(); $filesystem->mirror(__DIR__ . '/Fixtures/root', $this->tempDir); $this->io = $this->getMock('Composer\\IO\\IOInterface'); $this->config = new Config(false, $this->tempDir); $this->config->merge(array('config' => array('vendor-dir' => 'the-vendor'))); $this->installationManager = $this->getMockBuilder('Composer\\Installer\\InstallationManager')->disableOriginalConstructor()->getMock(); $this->installationManager->expects($this->any())->method('getInstallPath')->will($this->returnCallback(array($this, 'getInstallPath'))); $this->rootPackage = new RootPackage('vendor/root', '1.0', '1.0'); $this->localRepository = new TestLocalRepository(array(new Package('vendor/package1', '1.0', '1.0'), new Package('vendor/package2', '1.0', '1.0'))); $this->repositoryManager = new RepositoryManager($this->io, $this->config); $this->repositoryManager->setLocalRepository($this->localRepository); $this->installPaths = array(); $this->composer = new Composer(); $this->composer->setRepositoryManager($this->repositoryManager); $this->composer->setInstallationManager($this->installationManager); $this->composer->setConfig($this->config); $this->composer->setPackage($this->rootPackage); $this->puliRunner = $this->getMockBuilder('Puli\\ComposerPlugin\\PuliRunner')->disableOriginalConstructor()->getMock(); $this->previousWd = getcwd(); chdir($this->tempDir); $this->plugin = new PuliPlugin($this->puliRunner); }
protected function setUp() { $this->last_wdir = getcwd(); chdir(__DIR__ . '/../'); $this->plugin = new Plugin(); $this->composer = new Composer(); $this->io = new BufferIO('', StreamOutput::VERBOSITY_VERY_VERBOSE); $config = new Config(false); $config->merge(['config' => ['vendor-dir' => __DIR__]]); $repo_manager = new RepositoryManager($this->io, $config); $repository = new InstalledArrayRepository(); $package = new RootPackage('foobar', 1, 1); $event_dispatcher = new EventDispatcher($this->composer, $this->io); $autoload_generator = new AutoloadGenerator($event_dispatcher, $this->io); $package->setType('hostnet-entity'); $repo_manager->setLocalRepository($repository); $this->composer->setConfig($config); $this->composer->setRepositoryManager($repo_manager); $this->composer->setPackage($package); $this->composer->setAutoloadGenerator($autoload_generator); }
private function mockRepositoryManager() { $repository_manager = new RepositoryManager($this->mockIO(), $this->mockConfig()); $repository_manager->setLocalRepository(new WritableArrayRepository()); return $repository_manager; }
/** * Replace local repositories with InstalledArrayRepository instances * * This is to prevent any accidental modification of the existing repos on disk * * @param RepositoryManager $rm */ private function mockLocalRepositories(RepositoryManager $rm) { $packages = array_map(function ($p) { return clone $p; }, $rm->getLocalRepository()->getPackages()); foreach ($packages as $key => $package) { if ($package instanceof AliasPackage) { unset($packages[$key]); } } $rm->setLocalRepository(new InstalledArrayRepository($packages)); $packages = array_map(function ($p) { return clone $p; }, $rm->getLocalDevRepository()->getPackages()); foreach ($packages as $key => $package) { if ($package instanceof AliasPackage) { unset($packages[$key]); } } $rm->setLocalDevRepository(new InstalledArrayRepository($packages)); }
/** * Replace local repositories with InstalledArrayRepository instances * * This is to prevent any accidental modification of the existing repos on disk * * @param RepositoryManager $rm */ private function mockLocalRepositories(RepositoryManager $rm) { $packages = array(); foreach ($rm->getLocalRepository()->getPackages() as $package) { $packages[(string) $package] = clone $package; } foreach ($packages as $key => $package) { if ($package instanceof AliasPackage) { $alias = (string) $package->getAliasOf(); $packages[$key] = new AliasPackage($packages[$alias], $package->getVersion(), $package->getPrettyVersion()); } } $rm->setLocalRepository(new InstalledArrayRepository($packages)); }
/** * @param Repository\RepositoryManager $rm * @param string $vendorDir */ protected function addLocalRepository(IOInterface $io, RepositoryManager $rm, $vendorDir) { $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed.json', null, $io))); }
protected function addLocalRepository(RepositoryManager $rm, $vendorDir) { $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/.composer/installed.json'))); }
protected function addLocalRepository(RepositoryManager $rm, $vendorDir) { // TODO BC feature, remove after June 15th if (file_exists($vendorDir . '/.composer/installed.json')) { if (!is_dir($vendorDir . '/composer')) { mkdir($vendorDir . '/composer/', 0777, true); } rename($vendorDir . '/.composer/installed.json', $vendorDir . '/composer/installed.json'); } if (file_exists($vendorDir . '/.composer/installed_dev.json')) { if (!is_dir($vendorDir . '/composer')) { mkdir($vendorDir . '/composer/', 0777, true); } rename($vendorDir . '/.composer/installed_dev.json', $vendorDir . '/composer/installed_dev.json'); } if (file_exists($vendorDir . '/installed.json')) { if (!is_dir($vendorDir . '/composer')) { mkdir($vendorDir . '/composer/', 0777, true); } rename($vendorDir . '/installed.json', $vendorDir . '/composer/installed.json'); } if (file_exists($vendorDir . '/installed_dev.json')) { if (!is_dir($vendorDir . '/composer')) { mkdir($vendorDir . '/composer/', 0777, true); } rename($vendorDir . '/installed_dev.json', $vendorDir . '/composer/installed_dev.json'); } $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed.json'))); $rm->setLocalDevRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed_dev.json'))); }