* Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Test\Repository; use Composer\Package\Package; use Composer\Repository\PlatformRepository; use Composer\Test\TestCase; use Composer\Util\Platform; use Symfony\Component\Process\ExecutableFinder; class PlatformRepositoryTest extends TestCase { public function testHHVMVersionWhenExecutingInHHVM() { if (!defined('HHVM_VERSION_ID')) { $this->markTestSkipped('Not running with HHVM'); return; } $repository = new PlatformRepository(); $package = $repository->findPackage('hhvm', '*'); $this->assertNotNull($package, 'failed to find HHVM package'); $this->assertSame( sprintf('%d.%d.%d', HHVM_VERSION_ID / 10000, (HHVM_VERSION_ID / 100) % 100, HHVM_VERSION_ID % 100 ), $package->getPrettyVersion() ); } public function testHHVMVersionWhenExecutingInPHP() { if (defined('HHVM_VERSION_ID')) { $this->markTestSkipped('Running with HHVM'); return; } if (PHP_VERSION_ID < 50400) { $this->markTestSkipped('Test only works on PHP 5.4+'); return; } if (Platform::isWindows()) { $this->markTestSkipped('Test does not run on Windows'); return; } $finder = new ExecutableFinder(); $hhvm = $finder->find('hhvm'); if ($hhvm === null) { $this->markTestSkipped('HHVM is not installed'); } $process = $this->getMockBuilder('Composer\Util\ProcessExecutor')->getMock(); $process->expects($this->once())->method('execute')->will($this->returnCallback( function($command, &$out) { $this->assertContains('HHVM_VERSION', $command); $out = '4.0.1-dev'; return 0; } )); $repository = new PlatformRepository(array(), array(), $process); $package = $repository->findPackage('hhvm', '*'); $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'); } }