Browse Source

Update PearPackageExtractor for package.xml 2.1 support

Alexey Prilipko 12 years ago
parent
commit
a88265a497

+ 2 - 2
src/Composer/Downloader/PearPackageExtractor.php

@@ -115,13 +115,13 @@ class PearPackageExtractor
             throw new \RuntimeException('Package definition file is not valid.');
 
         $packageSchemaVersion = $package['version'];
-        if ($packageSchemaVersion == '1.0') {
+        if ('1.0' == $packageSchemaVersion) {
             $children = $package->release->filelist->children();
             $packageName = (string) $package->name;
             $packageVersion = (string) $package->release->version;
             $sourceDir = $packageName . '-' . $packageVersion;
             $result = $this->buildSourceList10($children, $role, $sourceDir);
-        } elseif ($packageSchemaVersion == '2.0') {
+        } elseif ('2.0' == $packageSchemaVersion || '2.1' == $packageSchemaVersion) {
             $children = $package->contents->children();
             $packageName = (string) $package->name;
             $packageVersion = (string) $package->version->release;

+ 25 - 0
tests/Composer/Test/Downloader/Fixtures/Package_v2.1/package.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package xmlns="http://pear.php.net/dtd/package-2.1" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.1 http://pear.php.net/dtd/package-2.1.xsd" packagerversion="2.0.0">
+    <!-- stripped version of package-->
+    <name>Zend_Authentication</name>
+    <channel>packages.zendframework.com</channel>
+    <summary>
+        Package Zend_Authentication summary.\n\n" . "Package detailed description here (found in README)
+    </summary>
+    <description/>
+    <version>
+        <release>2.0.0beta4</release>
+        <api>2.0.0beta4</api>
+    </version>
+    <stability>
+        <release>beta</release>
+        <api>beta</api>
+    </stability>
+    <contents>
+        <dir name="/">
+            <file role="php" name="php/Zend/Authentication/Storage/StorageInterface.php"/>
+            <file role="php" name="php/Zend/Authentication/Result.php"/>
+        </dir>
+    </contents>
+    <phprelease/>
+</package>

+ 21 - 0
tests/Composer/Test/Downloader/PearPackageExtractorTest.php

@@ -57,4 +57,25 @@ class PearPackageExtractorTest extends \PHPUnit_Framework_TestCase
         );
         $this->assertSame($expectedFileActions, $fileActions);
     }
+
+    public function testShouldExtractPackage_2_1()
+    {
+        $extractor = $this->getMockForAbstractClass('Composer\Downloader\PearPackageExtractor', array(), '', false);
+        $method = new \ReflectionMethod($extractor, 'buildCopyActions');
+        $method->setAccessible(true);
+
+        $fileActions = $method->invoke($extractor, __DIR__ . '/Fixtures/Package_v2.1', 'php');
+
+        $expectedFileActions = array(
+            0 => Array(
+                'from' => 'Zend_Authentication-2.0.0beta4/php/Zend/Authentication/Storage/StorageInterface.php',
+                'to' => '/php/Zend/Authentication/Storage/StorageInterface.php',
+            ),
+            1 => Array(
+                'from' => 'Zend_Authentication-2.0.0beta4/php/Zend/Authentication/Result.php',
+                'to' => '/php/Zend/Authentication/Result.php',
+            )
+        );
+        $this->assertSame($expectedFileActions, $fileActions);
+    }
 }