PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/composer/composer/tests/Composer/Test/Repository/Pear/ChannelReaderTest.php

https://gitlab.com/yousafsyed/easternglamor
PHP | 152 lines | 124 code | 19 blank | 9 comment | 0 complexity | 3103ab545cb720811e1862ede1ef23fb MD5 | raw file
  1. <?php
  2. /*
  3. * This file is part of Composer.
  4. *
  5. * (c) Nils Adermann <naderman@naderman.de>
  6. * Jordi Boggiano <j.boggiano@seld.be>
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11. namespace Composer\Repository\Pear;
  12. use Composer\TestCase;
  13. use Composer\Package\Version\VersionParser;
  14. use Composer\Package\LinkConstraint\VersionConstraint;
  15. use Composer\Package\Link;
  16. use Composer\Package\CompletePackage;
  17. use Composer\Test\Mock\RemoteFilesystemMock;
  18. class ChannelReaderTest extends TestCase
  19. {
  20. public function testShouldBuildPackagesFromPearSchema()
  21. {
  22. $rfs = new RemoteFilesystemMock(array(
  23. 'http://pear.net/channel.xml' => file_get_contents(__DIR__ . '/Fixtures/channel.1.1.xml'),
  24. 'http://test.loc/rest11/c/categories.xml' => file_get_contents(__DIR__ . '/Fixtures/Rest1.1/categories.xml'),
  25. 'http://test.loc/rest11/c/Default/packagesinfo.xml' => file_get_contents(__DIR__ . '/Fixtures/Rest1.1/packagesinfo.xml'),
  26. ));
  27. $reader = new \Composer\Repository\Pear\ChannelReader($rfs);
  28. $channelInfo = $reader->read('http://pear.net/');
  29. $packages = $channelInfo->getPackages();
  30. $this->assertCount(3, $packages);
  31. $this->assertEquals('HTTP_Client', $packages[0]->getPackageName());
  32. $this->assertEquals('HTTP_Request', $packages[1]->getPackageName());
  33. $this->assertEquals('MDB2', $packages[2]->getPackageName());
  34. $mdb2releases = $packages[2]->getReleases();
  35. $this->assertEquals(9, count($mdb2releases['2.4.0']->getDependencyInfo()->getOptionals()));
  36. }
  37. public function testShouldSelectCorrectReader()
  38. {
  39. $rfs = new RemoteFilesystemMock(array(
  40. 'http://pear.1.0.net/channel.xml' => file_get_contents(__DIR__ . '/Fixtures/channel.1.0.xml'),
  41. 'http://test.loc/rest10/p/packages.xml' => file_get_contents(__DIR__ . '/Fixtures/Rest1.0/packages.xml'),
  42. 'http://test.loc/rest10/p/http_client/info.xml' => file_get_contents(__DIR__ . '/Fixtures/Rest1.0/http_client_info.xml'),
  43. 'http://test.loc/rest10/p/http_request/info.xml' => file_get_contents(__DIR__ . '/Fixtures/Rest1.0/http_request_info.xml'),
  44. 'http://pear.1.1.net/channel.xml' => file_get_contents(__DIR__ . '/Fixtures/channel.1.1.xml'),
  45. 'http://test.loc/rest11/c/categories.xml' => file_get_contents(__DIR__ . '/Fixtures/Rest1.1/categories.xml'),
  46. 'http://test.loc/rest11/c/Default/packagesinfo.xml' => file_get_contents(__DIR__ . '/Fixtures/Rest1.1/packagesinfo.xml'),
  47. ));
  48. $reader = new \Composer\Repository\Pear\ChannelReader($rfs);
  49. $reader->read('http://pear.1.0.net/');
  50. $reader->read('http://pear.1.1.net/');
  51. }
  52. public function testShouldCreatePackages()
  53. {
  54. $reader = $this->getMockBuilder('\Composer\Repository\PearRepository')
  55. ->disableOriginalConstructor()
  56. ->getMock();
  57. $ref = new \ReflectionMethod($reader, 'buildComposerPackages');
  58. $ref->setAccessible(true);
  59. $channelInfo = new ChannelInfo(
  60. 'test.loc',
  61. 'test',
  62. array(
  63. new PackageInfo(
  64. 'test.loc',
  65. 'sample',
  66. 'license',
  67. 'shortDescription',
  68. 'description',
  69. array(
  70. '1.0.0.1' => new ReleaseInfo(
  71. 'stable',
  72. new DependencyInfo(
  73. array(
  74. new DependencyConstraint(
  75. 'required',
  76. '> 5.2.0.0',
  77. 'php',
  78. ''
  79. ),
  80. new DependencyConstraint(
  81. 'conflicts',
  82. '== 2.5.6.0',
  83. 'pear.php.net',
  84. 'broken'
  85. ),
  86. ),
  87. array(
  88. '*' => array(
  89. new DependencyConstraint(
  90. 'optional',
  91. '*',
  92. 'ext',
  93. 'xml'
  94. ),
  95. )
  96. )
  97. )
  98. )
  99. )
  100. )
  101. )
  102. );
  103. $packages = $ref->invoke($reader, $channelInfo, new VersionParser());
  104. $expectedPackage = new CompletePackage('pear-test.loc/sample', '1.0.0.1' , '1.0.0.1');
  105. $expectedPackage->setType('pear-library');
  106. $expectedPackage->setDistType('file');
  107. $expectedPackage->setDescription('description');
  108. $expectedPackage->setLicense(array('license'));
  109. $expectedPackage->setDistUrl("http://test.loc/get/sample-1.0.0.1.tgz");
  110. $expectedPackage->setAutoload(array('classmap' => array('')));
  111. $expectedPackage->setIncludePaths(array('/'));
  112. $expectedPackage->setRequires(array(
  113. new Link('pear-test.loc/sample', 'php', $this->createConstraint('>', '5.2.0.0'), 'required', '> 5.2.0.0'),
  114. ));
  115. $expectedPackage->setConflicts(array(
  116. new Link('pear-test.loc/sample', 'pear-pear.php.net/broken', $this->createConstraint('==', '2.5.6.0'), 'conflicts', '== 2.5.6.0'),
  117. ));
  118. $expectedPackage->setSuggests(array(
  119. '*-ext-xml' => '*',
  120. ));
  121. $expectedPackage->setReplaces(array(
  122. new Link('pear-test.loc/sample', 'pear-test/sample', new VersionConstraint('==', '1.0.0.1'), 'replaces', '== 1.0.0.1'),
  123. ));
  124. $this->assertCount(1, $packages);
  125. $this->assertEquals($expectedPackage, $packages[0], 0, 1);
  126. }
  127. private function createConstraint($operator, $version)
  128. {
  129. $constraint = new VersionConstraint($operator, $version);
  130. $constraint->setPrettyString($operator.' '.$version);
  131. return $constraint;
  132. }
  133. }