1
0
Fork 0

Merge pull request #9085 from lstrojny/lib-cldr

Allow specifying a version requirement for CLDR
pull/9092/head
Jordi Boggiano 2020-07-30 14:53:46 +02:00 committed by GitHub
commit daae46e1e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 62 additions and 10 deletions

View File

@ -154,7 +154,14 @@ class PlatformRepository extends ArrayRepository
break;
case 'intl':
$name = 'ICU';
if (class_exists('ResourceBundle', false)) {
# Add a seperate version for the CLDR library version
$cldrVersion = \ResourceBundle::create('root', 'ICUDATA-curr', false)->get('Version');
$this->addLibrary('cldr', 'The unicode CLDR project', $cldrVersion);
}
$name = 'icu';
$description = 'The ICU unicode and globalization support library';
if (defined('INTL_ICU_VERSION')) {
$prettyVersion = INTL_ICU_VERSION;
} else {
@ -228,15 +235,7 @@ class PlatformRepository extends ArrayRepository
continue 2;
}
try {
$version = $this->versionParser->normalize($prettyVersion);
} catch (\UnexpectedValueException $e) {
continue;
}
$lib = new CompletePackage('lib-'.$name, $version, $prettyVersion);
$lib->setDescription($description);
$this->addPackage($lib);
$this->addLibrary($name, $description, $prettyVersion);
}
$hhvmVersion = defined('HHVM_VERSION') ? HHVM_VERSION : null;
@ -346,4 +345,22 @@ class PlatformRepository extends ArrayRepository
{
return 'ext-' . str_replace(' ', '-', $name);
}
/**
* @param string $name
* @param string $description
* @param string $prettyVersion
*/
private function addLibrary($name, $description, $prettyVersion)
{
try {
$version = $this->versionParser->normalize($prettyVersion);
} catch (\UnexpectedValueException $e) {
return;
}
$lib = new CompletePackage('lib-'.$name, $version, $prettyVersion);
$lib->setDescription($description);
$this->addPackage($lib);
}
}

View File

@ -12,6 +12,7 @@
namespace Composer\Test\Repository;
use Composer\Package\Package;
use Composer\Repository\PlatformRepository;
use Composer\Test\TestCase;
use Composer\Util\Platform;
@ -67,4 +68,38 @@ class PlatformRepositoryTest extends TestCase {
$this->assertNotNull($package, 'failed to find HHVM package');
$this->assertSame('4.0.1.0-dev', $package->getVersion());
}
public function testICULibraryVersion() {
if (!defined('INTL_ICU_VERSION')) {
$this->markTestSkipped('Test only work with ext-intl present');
}
if (!class_exists('ResourceBundle', false)) {
$this->markTestSkipped('Test only work with ResourceBundle class present');
}
$platformRepository = new PlatformRepository();
$packages = $platformRepository->getPackages();
/** @var Package $icuPackage */
$icuPackage = null;
/** @var Package $cldrPackage */
$cldrPackage = null;
foreach ($packages as $package) {
if ($package->getName() === 'lib-icu') {
$icuPackage = $package;
}
if ($package->getName() === 'lib-cldr') {
$cldrPackage = $package;
}
}
self::assertNotNull($icuPackage, 'Expected to find lib-icu in packages');
self::assertNotNull($cldrPackage, 'Expected to find lib-cldr in packages');
self::assertSame(3, substr_count($icuPackage->getVersion(), '.'), 'Expected to find real ICU version');
self::assertSame(3, substr_count($cldrPackage->getVersion(), '.'), 'Expected to find real CLDR version');
}
}