Example #1
0
 /**
  * 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);
 }
Example #3
0
 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'));
 }
Example #15
0
 /**
  * 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;
 }