Exemple #1
0
 public function testPrettyString()
 {
     $repo = new ArrayRepository();
     $repo->addPackage($p1 = $this->getPackage('foo', '2.1'));
     $repo->addPackage($p2 = $this->getPackage('baz', '1.1'));
     $this->pool->addRepository($repo);
     $rule = new Rule(array($p1->getId(), -$p2->getId()), 'job1', null);
     $this->assertEquals('(don\'t install baz 1.1|install foo 2.1)', $rule->getPrettyString($this->pool));
 }
Exemple #2
0
 public function testGetMaxId()
 {
     $pool = new Pool();
     $repository = new ArrayRepository();
     $firstPackage = $this->getPackage('foo', '1');
     $secondPackage = $this->getPackage('foo1', '1');
     $this->assertEquals(0, $pool->getMaxId());
     $repository->addPackage($firstPackage);
     $repository->addPackage($secondPackage);
     $pool->addRepository($repository);
     $this->assertEquals(2, $pool->getMaxId());
 }
 public function testSearchWithPackageType()
 {
     $repo = new ArrayRepository();
     $repo->addPackage($this->getPackage('foo', '1', 'Composer\\Package\\CompletePackage'));
     $repo->addPackage($this->getPackage('bar', '1', 'Composer\\Package\\CompletePackage'));
     $package = $this->getPackage('foobar', '1', 'Composer\\Package\\CompletePackage');
     $package->setType('composer-plugin');
     $repo->addPackage($package);
     $this->assertSame(array(array('name' => 'foo', 'description' => null)), $repo->search('foo', RepositoryInterface::SEARCH_FULLTEXT, 'library'));
     $this->assertEmpty($repo->search('bar', RepositoryInterface::SEARCH_FULLTEXT, 'package'));
     $this->assertSame(array(array('name' => 'foobar', 'description' => null)), $repo->search('foo', 0, 'composer-plugin'));
 }
 public function testFindPackagesByName()
 {
     $repo = new ArrayRepository();
     $repo->addPackage($this->getPackage('foo', '1'));
     $repo->addPackage($this->getPackage('bar', '2'));
     $repo->addPackage($this->getPackage('bar', '3'));
     $foo = $repo->findPackagesByName('foo');
     $this->assertCount(1, $foo);
     $this->assertEquals('foo', $foo[0]->getName());
     $bar = $repo->findPackagesByName('bar');
     $this->assertCount(2, $bar);
     $this->assertEquals('bar', $bar[0]->getName());
 }
 protected function initialize()
 {
     parent::initialize();
     $versionParser = new VersionParser();
     try {
         $prettyVersion = PHP_VERSION;
         $version = $versionParser->normalize($prettyVersion);
     } catch (\UnexpectedValueException $e) {
         $prettyVersion = preg_replace('#^(.+?)(-.+)?$#', '$1', PHP_VERSION);
         $version = $versionParser->normalize($prettyVersion);
     }
     $php = new MemoryPackage('php', $version, $prettyVersion);
     $php->setDescription('The PHP interpreter');
     parent::addPackage($php);
     foreach (get_loaded_extensions() as $name) {
         if (in_array($name, array('standard', 'Core'))) {
             continue;
         }
         $reflExt = new \ReflectionExtension($name);
         try {
             $prettyVersion = $reflExt->getVersion();
             $version = $versionParser->normalize($prettyVersion);
         } catch (\UnexpectedValueException $e) {
             $prettyVersion = '0';
             $version = $versionParser->normalize($prettyVersion);
         }
         $ext = new MemoryPackage('ext-' . $name, $version, $prettyVersion);
         $ext->setDescription('The ' . $name . ' PHP extension');
         parent::addPackage($ext);
     }
 }
Exemple #6
0
 public function testRequestInstallAndRemove()
 {
     $pool = new Pool();
     $repo = new ArrayRepository();
     $foo = $this->getPackage('foo', '1');
     $bar = $this->getPackage('bar', '1');
     $foobar = $this->getPackage('foobar', '1');
     $repo->addPackage($foo);
     $repo->addPackage($bar);
     $repo->addPackage($foobar);
     $pool->addRepository($repo);
     $request = new Request($pool);
     $request->install('foo');
     $request->install('bar');
     $request->remove('foobar');
     $this->assertEquals(array(array('packages' => array($foo), 'cmd' => 'install', 'packageName' => 'foo'), array('packages' => array($bar), 'cmd' => 'install', 'packageName' => 'bar'), array('packages' => array($foobar), 'cmd' => 'remove', 'packageName' => 'foobar')), $request->getJobs());
 }
 public function testToString()
 {
     $repo = new ArrayRepository();
     $repo->addPackage($p1 = $this->getPackage('foo', '2.1'));
     $repo->addPackage($p2 = $this->getPackage('baz', '1.1'));
     $this->pool->addRepository($repo);
     $rule = new Rule($this->pool, array($p1->getId(), -$p2->getId()), 'job1', null);
     $this->assertEquals('(-baz-1.1.0.0|+foo-2.1.0.0)', $rule->__toString());
 }
 public function testAutomaticallyAddAliasedPackage()
 {
     $repo = new ArrayRepository();
     $package = $this->getPackage('foo', '1');
     $alias = $this->getAliasPackage($package, '2');
     $repo->addPackage($alias);
     $this->assertEquals(2, count($repo));
     $this->assertTrue($repo->hasPackage($this->getPackage('foo', '1')));
     $this->assertTrue($repo->hasPackage($this->getPackage('foo', '2')));
 }
 /**
  * @return array
  */
 public function dataGetPackages()
 {
     $emptyRepo = new ArrayRepository();
     $vendorRepo = new ArrayRepository();
     $vendorRepo2 = new ArrayRepository();
     $package = new Package('vendor/name', '1.0.0.0', '1.0');
     $package2 = new Package('vendor2/name', '1.0.0.0', '1.0');
     $package3 = new Package('vendor2/name2', '1.0.0.0', '1.0');
     $vendorRepo->addPackage($package);
     $vendorRepo2->addPackage($package2);
     $vendorRepo2->addPackage($package3);
     $data = [];
     $data['empty repository'] = [[], [], $emptyRepo];
     $data['empty repository with filter'] = [[], ['vendor/name'], $emptyRepo];
     $data['repository with one package'] = [[$package], [], $vendorRepo];
     $data['repository with one package and filter'] = [[], ['othervendor/othername'], $vendorRepo];
     $data['repository with two packages'] = [[$package2, $package3], [], $vendorRepo2];
     $data['repository with two packages and filter'] = [[$package2], ['vendor2/name'], $vendorRepo2];
     return $data;
 }
 public function dataGetPackages()
 {
     $emptyRepo = new ArrayRepository();
     $vendorRepo = new ArrayRepository();
     $vendorRepo2 = new ArrayRepository();
     $package = new Package('vendor/name', '1.0.0.0', '1.0');
     $package2 = new Package('vendor2/name', '1.0.0.0', '1.0');
     $package3 = new Package('vendor2/name2', '1.0.0.0', '1.0');
     $vendorRepo->addPackage($package);
     $vendorRepo2->addPackage($package2);
     $vendorRepo2->addPackage($package3);
     $data = array();
     $data['empty repository'] = array(array(), array(), $emptyRepo);
     $data['empty repository with filter'] = array(array(), array('vendor/name'), $emptyRepo);
     $data['repository with one package'] = array(array($package), array(), $vendorRepo);
     $data['repository with one package and filter'] = array(array(), array('othervendor/othername'), $vendorRepo);
     $data['repository with two packages'] = array(array($package2, $package3), array(), $vendorRepo2);
     $data['repository with two packages and filter'] = array(array($package2), array('vendor2/name'), $vendorRepo2);
     return $data;
 }
Exemple #11
0
 public function testRequestInstallSamePackageFromDifferentRepositories()
 {
     $repo1 = new ArrayRepository();
     $repo2 = new ArrayRepository();
     $foo1 = $this->getPackage('foo', '1');
     $foo2 = $this->getPackage('foo', '1');
     $repo1->addPackage($foo1);
     $repo2->addPackage($foo2);
     $request = new Request();
     $request->install('foo', $constraint = $this->getVersionConstraint('=', '1'));
     $this->assertEquals(array(array('cmd' => 'install', 'packageName' => 'foo', 'constraint' => $constraint, 'fixed' => false)), $request->getJobs());
 }
Exemple #12
0
 public function testSolverInstallSamePackageFromDifferentRepositories()
 {
     $repo1 = new ArrayRepository();
     $repo2 = new ArrayRepository();
     $repo1->addPackage($foo1 = $this->getPackage('foo', '1'));
     $repo2->addPackage($foo2 = $this->getPackage('foo', '1'));
     $this->pool->addRepository($this->repoInstalled);
     $this->pool->addRepository($repo1);
     $this->pool->addRepository($repo2);
     $this->request->install('foo');
     $this->checkSolverResult(array(array('job' => 'install', 'package' => $foo1)));
 }
    public function testSelectLowest()
    {
        $policy = new DefaultPolicy(false, true);

        $this->repo->addPackage($packageA1 = $this->getPackage('A', '1.0'));
        $this->repo->addPackage($packageA2 = $this->getPackage('A', '2.0'));
        $this->pool->addRepository($this->repo);

        $literals = array($packageA1->getId(), $packageA2->getId());
        $expected = array($packageA1->getId());

        $selected = $policy->selectPreferredPackages($this->pool, array(), $literals);

        $this->assertSame($expected, $selected);
    }
 public static function Construct(IOInterface $io)
 {
     $repo = new ArrayRepository();
     try {
         $web_folder = Locator::getWebFolderPath();
         $version_file = $web_folder . '/intranet/setup/_init/version.txt';
         if (!file_exists($version_file)) {
             throw new \Exception("No version.txt for core found - assuming framework is not installed");
         }
         $version_data = file($version_file);
         $core_version = $version_data[1];
         $normalizer = new VersionParser();
         $core_version_normalized = $normalizer->normalize($core_version);
         $io->write("Detected core version {$core_version} ({$core_version_normalized})");
         $core_package = new Package(FrameworkInstallerV8::PACKAGE_NAME, $core_version_normalized, $core_version);
         $repo->addPackage($core_package);
     } catch (\Exception $e) {
         $io->write($e->getMessage());
         // if can't determine location of 'web' folder, not adding the core package therefore letting
         // composer install it
     }
     return $repo;
 }
Exemple #15
0
 public function getLockedRepository($withDevReqs = false)
 {
     $lockData = $this->getLockData();
     $packages = new ArrayRepository();
     $lockedPackages = $lockData['packages'];
     if ($withDevReqs) {
         if (isset($lockData['packages-dev'])) {
             $lockedPackages = array_merge($lockedPackages, $lockData['packages-dev']);
         } else {
             throw new \RuntimeException('The lock file does not contain require-dev information, run install with the --no-dev option or run update to install those packages.');
         }
     }
     if (empty($lockedPackages)) {
         return $packages;
     }
     if (isset($lockedPackages[0]['name'])) {
         foreach ($lockedPackages as $info) {
             $packages->addPackage($this->loader->load($info));
         }
         return $packages;
     }
     throw new \RuntimeException('Your composer.lock was created before 2012-09-15, and is not supported anymore. Run "composer update" to generate a new one.');
 }
 protected function initialize()
 {
     parent::initialize();
     $versionParser = new VersionParser();
     try {
         $prettyVersion = PHP_VERSION;
         $version = $versionParser->normalize($prettyVersion);
     } catch (\UnexpectedValueException $e) {
         $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', PHP_VERSION);
         $version = $versionParser->normalize($prettyVersion);
     }
     $php = new CompletePackage('php', $version, $prettyVersion);
     $php->setDescription('The PHP interpreter');
     parent::addPackage($php);
     if (PHP_INT_SIZE === 8) {
         $php64 = new CompletePackage('php-64bit', $version, $prettyVersion);
         $php64->setDescription('The PHP interpreter (64bit)');
         parent::addPackage($php64);
     }
     $loadedExtensions = get_loaded_extensions();
     // Extensions scanning
     foreach ($loadedExtensions as $name) {
         if (in_array($name, array('standard', 'Core'))) {
             continue;
         }
         $reflExt = new \ReflectionExtension($name);
         try {
             $prettyVersion = $reflExt->getVersion();
             $version = $versionParser->normalize($prettyVersion);
         } catch (\UnexpectedValueException $e) {
             $prettyVersion = '0';
             $version = $versionParser->normalize($prettyVersion);
         }
         $ext = new CompletePackage('ext-' . $name, $version, $prettyVersion);
         $ext->setDescription('The ' . $name . ' PHP extension');
         parent::addPackage($ext);
     }
     // Another quick loop, just for possible libraries
     // Doing it this way to know that functions or constants exist before
     // relying on them.
     foreach ($loadedExtensions as $name) {
         $prettyVersion = null;
         switch ($name) {
             case 'curl':
                 $curlVersion = curl_version();
                 $prettyVersion = $curlVersion['version'];
                 break;
             case 'iconv':
                 $prettyVersion = ICONV_VERSION;
                 break;
             case 'intl':
                 $name = 'ICU';
                 if (defined('INTL_ICU_VERSION')) {
                     $prettyVersion = INTL_ICU_VERSION;
                 } else {
                     $reflector = new \ReflectionExtension('intl');
                     ob_start();
                     $reflector->info();
                     $output = ob_get_clean();
                     preg_match('/^ICU version => (.*)$/m', $output, $matches);
                     $prettyVersion = $matches[1];
                 }
                 break;
             case 'libxml':
                 $prettyVersion = LIBXML_DOTTED_VERSION;
                 break;
             case 'openssl':
                 $prettyVersion = preg_replace_callback('{^(?:OpenSSL\\s*)?([0-9.]+)([a-z]?).*}', function ($match) {
                     return $match[1] . (empty($match[2]) ? '' : '.' . (ord($match[2]) - 96));
                 }, OPENSSL_VERSION_TEXT);
                 break;
             case 'pcre':
                 $prettyVersion = preg_replace('{^(\\S+).*}', '$1', PCRE_VERSION);
                 break;
             case 'uuid':
                 $prettyVersion = phpversion('uuid');
                 break;
             case 'xsl':
                 $prettyVersion = LIBXSLT_DOTTED_VERSION;
                 break;
             default:
                 // None handled extensions have no special cases, skip
                 continue 2;
         }
         try {
             $version = $versionParser->normalize($prettyVersion);
         } catch (\UnexpectedValueException $e) {
             continue;
         }
         $lib = new CompletePackage('lib-' . $name, $version, $prettyVersion);
         $lib->setDescription('The ' . $name . ' PHP library');
         parent::addPackage($lib);
     }
 }
Exemple #17
0
 protected function initialize()
 {
     parent::initialize();
     $versionParser = new VersionParser();
     $prettyVersion = PluginInterface::PLUGIN_API_VERSION;
     $version = $versionParser->normalize($prettyVersion);
     $composerPluginApi = new CompletePackage('composer-plugin-api', $version, $prettyVersion);
     $composerPluginApi->setDescription('The Composer Plugin API');
     parent::addPackage($composerPluginApi);
     try {
         $prettyVersion = PHP_VERSION;
         $version = $versionParser->normalize($prettyVersion);
     } catch (\UnexpectedValueException $e) {
         $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', PHP_VERSION);
         $version = $versionParser->normalize($prettyVersion);
     }
     $php = new CompletePackage('php', $version, $prettyVersion);
     $php->setDescription('The PHP interpreter');
     parent::addPackage($php);
     if (PHP_INT_SIZE === 8) {
         $php64 = new CompletePackage('php-64bit', $version, $prettyVersion);
         $php64->setDescription('The PHP interpreter (64bit)');
         parent::addPackage($php64);
     }
     $loadedExtensions = get_loaded_extensions();
     foreach ($loadedExtensions as $name) {
         if (in_array($name, array('standard', 'Core'))) {
             continue;
         }
         $reflExt = new \ReflectionExtension($name);
         try {
             $prettyVersion = $reflExt->getVersion();
             $version = $versionParser->normalize($prettyVersion);
         } catch (\UnexpectedValueException $e) {
             $prettyVersion = '0';
             $version = $versionParser->normalize($prettyVersion);
         }
         $packageName = $this->buildPackageName($name);
         $ext = new CompletePackage($packageName, $version, $prettyVersion);
         $ext->setDescription('The ' . $name . ' PHP extension');
         parent::addPackage($ext);
     }
     foreach ($loadedExtensions as $name) {
         $prettyVersion = null;
         switch ($name) {
             case 'curl':
                 $curlVersion = curl_version();
                 $prettyVersion = $curlVersion['version'];
                 break;
             case 'iconv':
                 $prettyVersion = ICONV_VERSION;
                 break;
             case 'intl':
                 $name = 'ICU';
                 if (defined('INTL_ICU_VERSION')) {
                     $prettyVersion = INTL_ICU_VERSION;
                 } else {
                     $reflector = new \ReflectionExtension('intl');
                     ob_start();
                     $reflector->info();
                     $output = ob_get_clean();
                     preg_match('/^ICU version => (.*)$/m', $output, $matches);
                     $prettyVersion = $matches[1];
                 }
                 break;
             case 'libxml':
                 $prettyVersion = LIBXML_DOTTED_VERSION;
                 break;
             case 'openssl':
                 $prettyVersion = preg_replace_callback('{^(?:OpenSSL\\s*)?([0-9.]+)([a-z]?).*}', function ($match) {
                     return $match[1] . (empty($match[2]) ? '' : '.' . (ord($match[2]) - 96));
                 }, OPENSSL_VERSION_TEXT);
                 break;
             case 'pcre':
                 $prettyVersion = preg_replace('{^(\\S+).*}', '$1', PCRE_VERSION);
                 break;
             case 'uuid':
                 $prettyVersion = phpversion('uuid');
                 break;
             case 'xsl':
                 $prettyVersion = LIBXSLT_DOTTED_VERSION;
                 break;
             default:
                 continue 2;
         }
         try {
             $version = $versionParser->normalize($prettyVersion);
         } catch (\UnexpectedValueException $e) {
             continue;
         }
         $lib = new CompletePackage('lib-' . $name, $version, $prettyVersion);
         $lib->setDescription('The ' . $name . ' PHP library');
         parent::addPackage($lib);
     }
     if (defined('HHVM_VERSION')) {
         try {
             $prettyVersion = HHVM_VERSION;
             $version = $versionParser->normalize($prettyVersion);
         } catch (\UnexpectedValueException $e) {
             $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', HHVM_VERSION);
             $version = $versionParser->normalize($prettyVersion);
         }
         $hhvm = new CompletePackage('hhvm', $version, $prettyVersion);
         $hhvm->setDescription('The HHVM Runtime (64bit)');
         parent::addPackage($hhvm);
     }
 }
 public function testToString()
 {
     $repo = new ArrayRepository();
     $repo->addPackage($p = $this->getPackage('foo', '2.1'));
     $this->pool->addRepository($repo);
     $ruleSet = new RuleSet();
     $literal = $p->getId();
     $rule = new Rule($this->pool, array($literal), 'job1', null);
     $ruleSet->add($rule, RuleSet::TYPE_JOB);
     $this->assertContains('JOB     : (+foo-2.1.0.0)', $ruleSet->__toString());
 }
 /**
  * {@inheritDoc}
  */
 public function addPackage(PackageInterface $package)
 {
     // Skip if overridden
     if (isset($this->overrides[strtolower($package->getName())])) {
         $overrider = $this->findPackage($package->getName(), '*');
         $overrider->setDescription($overrider->getDescription() . ' (actual: ' . $package->getPrettyVersion() . ')');
         return;
     }
     parent::addPackage($package);
 }
 /**
  * {@inheritDoc}
  */
 public function addPackage(PackageInterface $package)
 {
     // Skip if overridden
     if (isset($this->overrides[strtolower($package->getName())])) {
         return;
     }
     parent::addPackage($package);
 }
Exemple #21
0
 protected function initialize()
 {
     parent::initialize();
     $versionParser = new VersionParser();
     try {
         $prettyVersion = PHP_VERSION;
         $version = $versionParser->normalize($prettyVersion);
     } catch (\UnexpectedValueException $e) {
         $prettyVersion = preg_replace('#^(.+?)(-.+)?$#', '$1', PHP_VERSION);
         $version = $versionParser->normalize($prettyVersion);
     }
     $php = new MemoryPackage('php', $version, $prettyVersion);
     $php->setDescription('The PHP interpreter');
     parent::addPackage($php);
     $loadedExtensions = get_loaded_extensions();
     // Extensions scanning
     foreach ($loadedExtensions as $name) {
         if (in_array($name, array('standard', 'Core'))) {
             continue;
         }
         $reflExt = new \ReflectionExtension($name);
         try {
             $prettyVersion = $reflExt->getVersion();
             $version = $versionParser->normalize($prettyVersion);
         } catch (\UnexpectedValueException $e) {
             $prettyVersion = '0';
             $version = $versionParser->normalize($prettyVersion);
         }
         $ext = new MemoryPackage('ext-' . $name, $version, $prettyVersion);
         $ext->setDescription('The ' . $name . ' PHP extension');
         parent::addPackage($ext);
     }
     // Another quick loop, just for possible libraries
     // Doing it this way to know that functions or constants exist before
     // relying on them.
     foreach ($loadedExtensions as $name) {
         switch ($name) {
             case 'curl':
                 $curlVersion = curl_version();
                 $prettyVersion = $curlVersion['version'];
                 break;
             case 'iconv':
                 $prettyVersion = ICONV_VERSION;
                 break;
             case 'libxml':
                 $prettyVersion = LIBXML_DOTTED_VERSION;
                 break;
             case 'openssl':
                 $prettyVersion = preg_replace_callback('{^(?:OpenSSL\\s*)?([0-9.]+)([a-z]?).*}', function ($match) {
                     return $match[1] . (empty($match[2]) ? '' : '.' . (ord($match[2]) - 96));
                 }, OPENSSL_VERSION_TEXT);
                 break;
             case 'pcre':
                 $prettyVersion = preg_replace('{^(\\S+).*}', '$1', PCRE_VERSION);
                 break;
             case 'uuid':
                 $prettyVersion = phpversion('uuid');
                 break;
             case 'xsl':
                 $prettyVersion = LIBXSLT_DOTTED_VERSION;
                 break;
             default:
                 // None handled extensions have no special cases, skip
                 continue 2;
         }
         try {
             $version = $versionParser->normalize($prettyVersion);
         } catch (\UnexpectedValueException $e) {
             continue;
         }
         $lib = new MemoryPackage('lib-' . $name, $version, $prettyVersion);
         $lib->setDescription('The ' . $name . ' PHP library');
         parent::addPackage($lib);
     }
 }
Exemple #22
0
 public function testPackageById()
 {
     $pool = new Pool();
     $repository = new ArrayRepository();
     $package = $this->getPackage('foo', '1');
     $repository->addPackage($package);
     $pool->addRepository($repository);
     $this->assertSame($package, $pool->packageById(1));
 }
 public function testPreferReplacingPackageFromSameVendor()
 {
     // test with default order
     $this->repo->addPackage($packageB = $this->getPackage('vendor-b/replacer', '1.0'));
     $this->repo->addPackage($packageA = $this->getPackage('vendor-a/replacer', '1.0'));
     $packageA->setReplaces(array(new Link('vendor-a/replacer', 'vendor-a/package', new Constraint('==', '1.0'), 'replaces')));
     $packageB->setReplaces(array(new Link('vendor-b/replacer', 'vendor-a/package', new Constraint('==', '1.0'), 'replaces')));
     $this->pool->addRepository($this->repo);
     $literals = array($packageA->getId(), $packageB->getId());
     $expected = $literals;
     $selected = $this->policy->selectPreferredPackages($this->pool, array(), $literals, 'vendor-a/package');
     $this->assertEquals($expected, $selected);
     // test with reversed order in repo
     $repo = new ArrayRepository();
     $repo->addPackage($packageA = clone $packageA);
     $repo->addPackage($packageB = clone $packageB);
     $pool = new Pool('dev');
     $pool->addRepository($this->repo);
     $literals = array($packageA->getId(), $packageB->getId());
     $expected = $literals;
     $selected = $this->policy->selectPreferredPackages($this->pool, array(), $literals, 'vendor-a/package');
     $this->assertEquals($expected, $selected);
 }
Exemple #24
0
 /**
  * Searches and returns an array of locked packages, retrieved from registered repositories.
  *
  * @param  bool                                     $dev true to retrieve the locked dev packages
  * @return \Composer\Repository\RepositoryInterface
  */
 public function getLockedRepository($dev = false)
 {
     $lockData = $this->getLockData();
     $packages = new ArrayRepository();
     $lockedPackages = $dev ? $lockData['packages-dev'] : $lockData['packages'];
     if (empty($lockedPackages)) {
         return $packages;
     }
     if (isset($lockedPackages[0]['name'])) {
         foreach ($lockedPackages as $info) {
             $packages->addPackage($this->loader->load($info));
         }
         return $packages;
     }
     // legacy lock file support
     $repo = $dev ? $this->repositoryManager->getLocalDevRepository() : $this->repositoryManager->getLocalRepository();
     foreach ($lockedPackages as $info) {
         $resolvedVersion = !empty($info['alias-version']) ? $info['alias-version'] : $info['version'];
         // try to find the package in the local repo (best match)
         $package = $repo->findPackage($info['package'], $resolvedVersion);
         // try to find the package in any repo
         if (!$package) {
             $package = $this->repositoryManager->findPackage($info['package'], $resolvedVersion);
         }
         // try to find the package in any repo (second pass without alias + rebuild alias since it disappeared)
         if (!$package && !empty($info['alias-version'])) {
             $package = $this->repositoryManager->findPackage($info['package'], $info['version']);
             if ($package) {
                 $package->setAlias($info['alias-version']);
                 $package->setPrettyAlias($info['alias-pretty-version']);
             }
         }
         if (!$package) {
             throw new \LogicException(sprintf('Can not find "%s-%s" package in registered repositories', $info['package'], $info['version']));
         }
         $package = clone $package;
         if (!empty($info['time'])) {
             $package->setReleaseDate($info['time']);
         }
         if (!empty($info['source-reference'])) {
             $package->setSourceReference($info['source-reference']);
             if (is_callable($package, 'setDistReference')) {
                 $package->setDistReference($info['source-reference']);
             }
         }
         $packages->addPackage($package);
     }
     return $packages;
 }
 /**
  * Adds a new package to the repository
  *
  * @param PackageInterface $package
  */
 public function addPackage(PackageInterface $package)
 {
     parent::addPackage($package);
     $this->configurePackageTransportOptions($package);
 }
 public function testCount()
 {
     $arrayRepoOne = new ArrayRepository();
     $arrayRepoOne->addPackage($this->getPackage('foo', '1'));
     $arrayRepoTwo = new ArrayRepository();
     $arrayRepoTwo->addPackage($this->getPackage('bar', '1'));
     $repo = new CompositeRepository(array($arrayRepoOne, $arrayRepoTwo));
     $this->assertEquals(2, count($repo), "Should return '2' for count(\$repo)");
 }
Exemple #27
0
 public function testPrettyString()
 {
     $repo = new ArrayRepository();
     $repo->addPackage($p = $this->getPackage('foo', '2.1'));
     $this->pool->addRepository($repo);
     $ruleSet = new RuleSet();
     $literal = $p->getId();
     $rule = new Rule(array($literal), Rule::RULE_JOB_INSTALL, null);
     $ruleSet->add($rule, RuleSet::TYPE_JOB);
     $this->assertContains('JOB     : Install command rule (install foo 2.1)', $ruleSet->getPrettyString($this->pool));
 }
Exemple #28
0
$loader = new ArrayLoader();
/* Remote repository definition */
$json_string = file_get_contents("remote.json");
$packages = JsonFile::parseJson($json_string);
$remote_repo = new ArrayRepository();
foreach ($packages as $packageData) {
    $package = $loader->load($packageData);
    $remote_repo->addPackage($package);
}
/* Installed repository definition */
$json_string = file_get_contents("installed.json");
$packages = JsonFile::parseJson($json_string);
$installed_repo = new ArrayRepository();
foreach ($packages as $packageData) {
    $package = $loader->load($packageData);
    $installed_repo->addPackage($package);
}
/* Pool definition */
$pool = new Pool();
$pool->addRepository($remote_repo);
$pool->addRepository($installed_repo);
$request = new Request($pool);
$request->install("numpy", new MultiConstraint(array()));
class DebuggingSolver extends Solver
{
    public function printRules(Request $request)
    {
        $this->jobs = $request->getJobs();
        $this->setupInstalledMap();
        $this->decisions = new Decisions($this->pool);
        $this->rules = $this->ruleSetGenerator->getRulesFor($this->jobs, $this->installedMap);