Browse Source

Merge remote-tracking branch 'bashofmann/master'

Jordi Boggiano 13 years ago
parent
commit
b1eb47bdd0

+ 6 - 6
src/Composer/Repository/PearRepository.php

@@ -126,7 +126,7 @@ class PearRepository extends ArrayRepository
     /**
      * @param   string $categoryLink
      * @throws  TransportException
-     * @throws  InvalidArgumentException
+     * @throws  \InvalidArgumentException
      */
     private function fetchPearPackages($categoryLink)
     {
@@ -212,7 +212,7 @@ class PearRepository extends ArrayRepository
 
     /**
      * @todo    Improve dependencies resolution of pear packages.
-     * @param   array $options
+     * @param   array $depsOptions
      * @return  array
      */
     private function parseDependenciesOptions(array $depsOptions)
@@ -257,7 +257,7 @@ class PearRepository extends ArrayRepository
     /**
      * @param   string $deps
      * @return  array
-     * @throws  InvalidArgumentException
+     * @throws  \InvalidArgumentException
      */
     private function parseDependencies($deps)
     {
@@ -284,7 +284,7 @@ class PearRepository extends ArrayRepository
     /**
      * @param   string $packagesLink
      * @return  void
-     * @throws  InvalidArgumentException
+     * @throws  \InvalidArgumentException
      */
     private function fetchPear2Packages($packagesLink)
     {
@@ -358,7 +358,7 @@ class PearRepository extends ArrayRepository
 
     /**
      * @param  string $url
-     * @return DOMDocument
+     * @return \DOMDocument
      */
     private function requestXml($url)
     {
@@ -367,7 +367,7 @@ class PearRepository extends ArrayRepository
             throw new \UnexpectedValueException('The PEAR channel at '.$url.' did not respond.');
         }
         $dom = new \DOMDocument('1.0', 'UTF-8');
-        $dom->loadXML($content, LIBXML_NOERROR);
+        $dom->loadXML($content);
 
         return $dom;
     }

+ 127 - 0
tests/Composer/Test/Repository/PearRepositoryTest.php

@@ -0,0 +1,127 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Repository;
+
+use Composer\Repository\FilesystemRepository;
+use Composer\Test\TestCase;
+
+class PearRepositoryTest extends TestCase
+{
+
+    /**
+     * @var PearRepository
+     */
+    private $repository;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $remoteFilesystem;
+
+    /**
+     * @dataProvider repositoryDataProvider
+     * @param string $url
+     * @param array $expectedPackages
+     */
+    public function testRepositoryRead($url, array $expectedPackages)
+    {
+        $repoConfig = array(
+            'url' => $url
+        );
+
+        $this->createRepository($repoConfig);
+
+        foreach ($expectedPackages as $expectedPackage) {
+            $this->assertInstanceOf('Composer\Package\PackageInterface',
+                $this->repository->findPackage($expectedPackage['name'], $expectedPackage['version']),
+                'Expected package ' . $expectedPackage['name'] . ', version ' . $expectedPackage['version'] .
+                ' not found in pear channel ' . $url
+            );
+        }
+    }
+
+    public function repositoryDataProvider()
+    {
+        return array(
+            array(
+                'pear.phpunit.de',
+                array(
+                    array('name' => 'pear-phpunit/PHPUnit_MockObject', 'version' => '1.1.1'),
+                    array('name' => 'pear-phpunit/PHPUnit', 'version' => '3.6.10'),
+                )
+            ),
+            array(
+                'pear.php.net',
+                array(
+                    array('name' => 'pear-pear/PEAR', 'version' => '1.9.4'),
+                )
+            ),
+            array(
+                'pear.pdepend.org',
+                array(
+                    array('name' => 'pear-pdepend/PHP_Depend', 'version' => '1.0.5'),
+                )
+            ),
+            array(
+                'pear.phpmd.org',
+                array(
+                    array('name' => 'pear-phpmd/PHP_PMD', 'version' => '1.3.3'),
+                )
+            ),
+            array(
+                'pear.doctrine-project.org',
+                array(
+                    array('name' => 'pear-doctrine/DoctrineORM', 'version' => '2.2.2'),
+                )
+            ),
+            array(
+                'pear.symfony-project.com',
+                array(
+                    array('name' => 'pear-symfony/YAML', 'version' => '1.0.6'),
+                )
+            ),
+            array(
+                'pear.pirum-project.org',
+                array(
+                    array('name' => 'pear-pirum/Pirum', 'version' => '1.1.4'),
+                )
+            ),
+            array(
+                'packages.zendframework.com',
+                array(
+                    array('name' => 'pear-zf2/Zend_Code', 'version' => '2.0.0.0-beta3'),
+                )
+            ),
+        );
+    }
+
+    private function createRepository($repoConfig)
+    {
+        $ioInterface = $this->getMockBuilder('Composer\IO\IOInterface')
+            ->getMock();
+
+        $config = new \Composer\Config();
+
+        $this->remoteFilesystem = $this->getMockBuilder('Composer\Util\RemoteFilesystem')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->repository = new PearRepository($repoConfig, $ioInterface, $config, null);
+    }
+
+    protected function tearDown()
+    {
+        $this->repository = null;
+        $this->remoteFilesystem = null;
+    }
+}