PearRepositoryTest.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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;
  12. use Composer\Test\TestCase;
  13. /**
  14. * @group slow
  15. */
  16. class PearRepositoryTest extends TestCase
  17. {
  18. /**
  19. * @var PearRepository
  20. */
  21. private $repository;
  22. /**
  23. * @var \PHPUnit_Framework_MockObject_MockObject
  24. */
  25. private $remoteFilesystem;
  26. public function testComposerNonCompatibleRepositoryShouldSetIncludePath()
  27. {
  28. $url = 'pear.phpmd.org';
  29. $expectedPackages = array(
  30. array('name' => 'pear-phpmd/PHP_PMD', 'version' => '1.3.3'),
  31. );
  32. $repoConfig = array(
  33. 'url' => $url
  34. );
  35. $this->createRepository($repoConfig);
  36. foreach ($expectedPackages as $expectedPackage) {
  37. $package = $this->repository->findPackage($expectedPackage['name'], $expectedPackage['version']);
  38. $this->assertInstanceOf('Composer\Package\PackageInterface',
  39. $package,
  40. 'Expected package ' . $expectedPackage['name'] . ', version ' . $expectedPackage['version'] .
  41. ' not found in pear channel ' . $url
  42. );
  43. $this->assertSame(array('/'), $package->getIncludePaths());
  44. }
  45. }
  46. /**
  47. * @dataProvider repositoryDataProvider
  48. * @param string $url
  49. * @param array $expectedPackages
  50. */
  51. public function testRepositoryRead($url, array $expectedPackages)
  52. {
  53. $repoConfig = array(
  54. 'url' => $url
  55. );
  56. $this->createRepository($repoConfig);
  57. foreach ($expectedPackages as $expectedPackage) {
  58. $this->assertInstanceOf('Composer\Package\PackageInterface',
  59. $this->repository->findPackage($expectedPackage['name'], $expectedPackage['version']),
  60. 'Expected package ' . $expectedPackage['name'] . ', version ' . $expectedPackage['version'] .
  61. ' not found in pear channel ' . $url
  62. );
  63. }
  64. }
  65. public function repositoryDataProvider()
  66. {
  67. return array(
  68. array(
  69. 'pear.phpunit.de',
  70. array(
  71. array('name' => 'pear-phpunit/PHPUnit_MockObject', 'version' => '1.1.1'),
  72. array('name' => 'pear-phpunit/PHPUnit', 'version' => '3.6.10'),
  73. )
  74. ),
  75. array(
  76. 'pear.php.net',
  77. array(
  78. array('name' => 'pear-pear/PEAR', 'version' => '1.9.4'),
  79. )
  80. ),
  81. array(
  82. 'pear.pdepend.org',
  83. array(
  84. array('name' => 'pear-pdepend/PHP_Depend', 'version' => '1.0.5'),
  85. )
  86. ),
  87. array(
  88. 'pear.phpmd.org',
  89. array(
  90. array('name' => 'pear-phpmd/PHP_PMD', 'version' => '1.3.3'),
  91. )
  92. ),
  93. array(
  94. 'pear.doctrine-project.org',
  95. array(
  96. array('name' => 'pear-doctrine/DoctrineORM', 'version' => '2.2.2'),
  97. )
  98. ),
  99. array(
  100. 'pear.symfony-project.com',
  101. array(
  102. array('name' => 'pear-symfony/YAML', 'version' => '1.0.6'),
  103. )
  104. ),
  105. array(
  106. 'pear.pirum-project.org',
  107. array(
  108. array('name' => 'pear-pirum/Pirum', 'version' => '1.1.4'),
  109. )
  110. ),
  111. array(
  112. 'packages.zendframework.com',
  113. array(
  114. array('name' => 'pear-zf2/Zend_Code', 'version' => '2.0.0.0-beta3'),
  115. )
  116. ),
  117. );
  118. }
  119. private function createRepository($repoConfig)
  120. {
  121. $ioInterface = $this->getMockBuilder('Composer\IO\IOInterface')
  122. ->getMock();
  123. $config = new \Composer\Config();
  124. $this->remoteFilesystem = $this->getMockBuilder('Composer\Util\RemoteFilesystem')
  125. ->disableOriginalConstructor()
  126. ->getMock();
  127. $this->repository = new PearRepository($repoConfig, $ioInterface, $config, null);
  128. }
  129. protected function tearDown()
  130. {
  131. $this->repository = null;
  132. $this->remoteFilesystem = null;
  133. }
  134. }