/** * Test that a locally installed contao can be found when overriding the path via composer.json in the root package. * * @return void */ public function testOverrideViaExtra() { $plugin = $this->clearTest('/tmp/path'); $this->fs->ensureDirectoryExists($this->testRoot . '/tmp/path/system'); $package = new RootPackage('test/package', '1.0.0.0', '1.0.0'); $package->setExtra(array('contao' => array('root' => 'tmp/path'))); $this->assertEquals($this->testRoot . '/tmp/path', $plugin->getContaoRoot($package)); }
public function setUp() { $composer = new Composer(); $package = new RootPackage("test", "1", "1"); $package->setExtra(['opencart-dir' => 'tests/resources/sampleocdir']); $composer->setPackage($package); $composer->setConfig(new Config()); $this->openCartExtensionInstaller = new OpenCartExtensionInstaller($this->getMockBuilder('Composer\\IO\\IOInterface')->getMock(), $composer); }
public function setUp() { $this->plugin = $this->getMock('\\ContaoCommunityAlliance\\Composer\\Plugin\\Plugin'); $this->plugin->expects($this->any())->method('getContaoRoot')->will($this->returnValue('CONTAO_ROOT')); $package = new RootPackage('test/me', '0.8.15', '0.8.15.0'); $package->setType(AbstractInstaller::MODULE_TYPE); $this->composer = new Composer(); $this->composer->setConfig(new Config()); $this->composer->setPackage($package); $this->installerStub = $this->getMockForAbstractClass('\\ContaoCommunityAlliance\\Composer\\Plugin\\AbstractInstaller', array(new NullIO(), $this->composer, $this->plugin)); }
/** * {@inheritdoc} */ protected function setUp() { $this->localConfigPath = realpath(__DIR__ . '/../fixtures/local'); $this->globalConfigPath = realpath(__DIR__ . '/../fixtures/home'); $this->config = new Config(false, $this->localConfigPath); $this->config->merge(['config' => ['home' => $this->globalConfigPath]]); $package = new RootPackage('my/project', '1.0.0', '1.0.0'); $package->setExtra(['my-local-config' => ['foo' => 'bar']]); $this->composer = new Composer(); $this->composer->setConfig($this->config); $this->composer->setPackage($package); $this->SUT = new ConfigLocator($this->composer); }
/** * setUp * * @return void */ public function setUp() { $this->fs = new Filesystem(); $this->composer = new Composer(); $root = new RootPackage('gingerwfms/ginger-wfms', '1.0.0', '1.0.0'); $root->setExtra(array('bootstrap' => 'GingerPluginInstallerTest\\Mock\\BootstrapMock')); $this->composer->setPackage($root); $this->config = new Config(); $this->composer->setConfig($this->config); $this->vendorDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'ginger-test-vendor'; $this->ensureDirectoryExistsAndClear($this->vendorDir); $this->binDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'ginger-test-bin'; $this->ensureDirectoryExistsAndClear($this->binDir); $this->config->merge(array('config' => array('vendor-dir' => $this->vendorDir, 'bin-dir' => $this->binDir))); $this->dm = $this->getMockBuilder('Composer\\Downloader\\DownloadManager')->disableOriginalConstructor()->getMock(); $this->composer->setDownloadManager($this->dm); $this->repository = $this->getMock('Composer\\Repository\\InstalledRepositoryInterface'); $this->io = $this->getMock('Composer\\IO\\IOInterface'); }
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); }
public function testReinstallPackagesWithChangedEnvironment() { $event = new CommandEvent(ScriptEvents::POST_INSTALL_CMD, $this->composer, $this->io); $this->rootPackage->setRequires(array('vendor/package2' => new Link('vendor/root', 'vendor/package2'))); $this->io->expects($this->at(1))->method('write')->with('Reinstalling <info>vendor/package1</info> (<comment>package1</comment>) in <comment>dev</comment>'); $this->io->expects($this->never())->method('writeError'); $this->puliRunner->expects($this->at(0))->method('run')->with('package --list --format "%name%;%installer%;%install_path%;%state%;%env%"')->willReturn("vendor/root;;{$this->tempDir};enabled;prod\n" . "vendor/package1;composer;{$this->tempDir}/package1;enabled;prod\n" . "vendor/package2;composer;{$this->tempDir}/package2;enabled;prod\n"); $this->puliRunner->expects($this->at(1))->method('run')->with("package --delete 'vendor/package1'"); $this->puliRunner->expects($this->at(2))->method('run')->with("package --install --dev '{$this->tempDir}/package1' 'vendor/package1' --installer 'composer'"); $this->puliRunner->expects($this->at(3))->method('run')->with('build'); $this->plugin->postInstall($event); }
public function testIgnoredBundles() { $packages = array($this->createPackage('foo/foo-bundle', 'symfony-bundle', array('psr-0' => array('Acme\\FooBundle' => ''))), $this->createPackage('acme/library-bundle', 'symfony-bundle', array('psr-0' => array('Acme\\LibraryBundle' => '')))); $rootPackage = new RootPackage('DemoPackage', 'dev-master', '1.x-dev'); $rootPackage->setExtra(array('checkbundles-ignore' => array('Acme\\LibraryBundle\\AcmeLibraryBundle'))); $this->composerMock->expects($this->any())->method('getPackage')->will($this->returnValue($rootPackage)); $this->localRepository->expects($this->any())->method('getPackages')->will($this->returnValue($packages)); $kernelHelper = $this->getMockBuilder('WillemJan\\Util\\KernelHelper')->disableOriginalConstructor()->setMethods(array('getBundlesForKernels'))->getMock(); $kernelHelper->expects($this->any())->method('getBundlesForKernels')->will($this->returnValue(array('Acme\\FooBundle\\AcmeFooBundle'))); $composerHelper = $this->getMockBuilder('WillemJan\\CheckBundles\\Util\\ComposerHelper')->setConstructorArgs(array($this->composerMock))->setMethods(array('getInstalledRepository', 'findBundleFiles'))->getMock(); $composerHelper->expects($this->any())->method('findBundleFiles')->will($this->returnCallback(function ($package) use($packages) { switch ($package->getName()) { case 'foo/foo-bundle': return array('AcmeFooBundle.php'); break; case 'acme/library-bundle': return array('AcmeLibraryBundle.php'); break; } return array('ShouldNotHappenBundle.php'); })); $composerHelper->expects($this->any())->method('getInstalledRepository')->will($this->returnValue($this->localRepository)); $this->assertEquals(array(), $composerHelper->getNonActiveSymfonyBundles($kernelHelper->getBundlesForKernels())); }
public function testUnInstallCoreFromUpdateOperation() { $corePackage = $this->createCorePackage(); $rootPackage = new RootPackage('some/project', '1.0.0', 'some/project'); $rootPackage->setExtra(array('magento-root-dir' => 'htdocs')); $this->composer->setPackage($rootPackage); $pool = $this->getMockBuilder('Composer\\DependencyResolver\\Pool')->disableOriginalConstructor()->getMock(); $request = $this->getMockBuilder('Composer\\DependencyResolver\\Request')->disableOriginalConstructor()->getMock(); $compositeRepo = new CompositeRepository(array($this->localRepository)); $event = new PackageEvent('install-event', $this->composer, $this->io, false, $this->getMock('Composer\\DependencyResolver\\PolicyInterface'), $pool, $compositeRepo, $request, array(), new UpdateOperation($corePackage, $this->createCorePackage('magento/target'))); $plugin = $this->getPluginWithMockedInstaller('unInstall'); $l = ' - <comment>MagentoCoreInstaller: </comment>'; $l .= '<info>Removing: "magento/core-package" version: "1.0.0" from: "htdocs"</info>'; $this->io->expects($this->once())->method('write')->with($l); $plugin->activate($this->composer, $this->io); $plugin->uninstallCore($event); }
/** * Update the root package definition * * @param \Composer\Package\RootPackage $package * @param Collection $packagesToInstall * @return \Composer\Package\RootPackage */ private function updateRootPackage($package, Collection $packagesToInstall) { $this->io->write('<info>Updating root package</info>'); $package->setRequires($packagesToInstall->reduce(function ($requires, $package) { return $this->addRootPackageRequirement($requires, $package); }, $package->getRequires())); return $package; }
/** * Merge suggested packages into a RootPackage * * @param RootPackage $root */ protected function mergeSuggests(RootPackage $root) { $suggests = $this->package->getSuggests(); if (!empty($suggests)) { $root->setSuggests(array_merge($root->getSuggests(), $suggests)); } }
/** * Add a collection of repositories described by the given configuration * to the given package and the global repository manager. * * @param array $repositories * @param RootPackage $root */ protected function addRepositories(array $repositories, RootPackage $root) { $repoManager = $this->composer->getRepositoryManager(); $newRepos = array(); foreach ($repositories as $repoJson) { if (!isset($repoJson['type'])) { continue; } $this->debug("Adding {$repoJson['type']} repository"); $repo = $repoManager->createRepository($repoJson['type'], $repoJson); $repoManager->addRepository($repo); $newRepos[] = $repo; } $root->setRepositories(array_merge($newRepos, $root->getRepositories())); }
/** * Test if installer-name was set * */ public function testGetInstallPath() { $package = new RootPackage('Authenticate', '1.0', '1.0'); $autoload = array('psr-4' => array('FOC\\Authenticate' => 'src')); $package->setAutoload($autoload); $package->setType('cakephp-plugin'); $composer = new Composer(); $rm = new RepositoryManager($this->getMock('Composer\\IO\\IOInterface'), $this->getMock('Composer\\Config')); $composer->setRepositoryManager($rm); $installer = new CakePHPInstaller($package, $composer); $this->setCakephpVersion($rm, '3.0.0'); $installer->getInstallPath($package, 'cakephp'); $extra = $package->getExtra(); $this->assertEquals('FOC/Authenticate', $extra['installer-name']); }
/** * Test the conversion of a complete repository. * * @return void */ public function testConvertRepositoryToArrayOnlyRequired() { $repository = new ArrayRepository([$package1 = new CompletePackage('test/dependency1', '1.0.0.0', '1.0.0.0'), $package2 = new CompletePackage('test/non-dependency2', '2.0.0.0', '2.0.0.0')]); $package1->setType('project'); $package1->setLicense(['LGPL-3']); $package2->setType('project'); $package2->setLicense(['GPL-3']); $converter = new PackageConverter($rootPackage = new RootPackage('root/package', 'dev-master', 'dev-master')); $rootPackage->setRequires(['test/dependency1' => new Link('root/package', 'test/dependency1', new Constraint('<', '2.0'))]); $converted = $converter->convertRepositoryToArray($repository, true); $this->assertEquals(['test\\/dependency1'], $converted->getEntries('/')); $this->assertEquals(['test\\/dependency1/name', 'test\\/dependency1/version', 'test\\/dependency1/constraint', 'test\\/dependency1/type', 'test\\/dependency1/locked', 'test\\/dependency1/license', 'test\\/dependency1/abandoned'], $converted->getEntries('/test\\/dependency1')); $this->assertEquals($package1->getName(), $converted->get('test\\/dependency1/name')); $this->assertEquals($package1->getPrettyVersion(), $converted->get('test\\/dependency1/version')); $this->assertEquals($converted->get('test\\/dependency1/constraint'), '< 2.0'); $this->assertEquals($package1->getType(), $converted->get('test\\/dependency1/type')); $this->assertFalse($converted->get('test\\/dependency1/locked')); $this->assertEquals($package1->getLicense(), $converted->get('test\\/dependency1/license')); $this->assertFalse($converted->get('test\\/dependency1/abandoned')); }
/** * Merge extra config into a RootPackage * * @param RootPackage $root * @param PluginState $state */ public function mergeExtra(RootPackage $root, PluginState $state) { $extra = $this->package->getExtra(); unset($extra['merge-plugin']); if (!$state->shouldMergeExtra() || empty($extra)) { return; } $rootExtra = $root->getExtra(); if ($state->replaceDuplicateLinks()) { $root->setExtra(array_merge($rootExtra, $extra)); } else { foreach ($extra as $key => $value) { if (isset($rootExtra[$key])) { $this->logger->debug("Ignoring duplicate <comment>{$key}</comment> in " . "<comment>{$this->path}</comment> extra config."); } } $root->setExtra(array_merge($extra, $rootExtra)); } }
/** * @param $includeMageDir * @return RootPackage */ public function createRootPackage($includeMageDir = true) { $package = new RootPackage("root/package", "1.0.0", "root/package"); if ($includeMageDir) { $extra = array('magento-root-dir' => 'htdocs'); $package->setExtra($extra); } $this->composer->setPackage($package); return $package; }