浏览代码

Fix support of aliases combined with reference locked packages, fixes #1631

Jordi Boggiano 12 年之前
父节点
当前提交
c29f3c698e

+ 1 - 1
src/Composer/Package/Loader/RootPackageLoader.php

@@ -103,7 +103,7 @@ class RootPackageLoader extends ArrayLoader
     private function extractAliases(array $requires, array $aliases)
     {
         foreach ($requires as $reqName => $reqVersion) {
-            if (preg_match('{^([^,\s]+) +as +([^,\s]+)$}', $reqVersion, $match)) {
+            if (preg_match('{^([^,\s#]+)(?:#[^ ]+)? +as +([^,\s]+)$}', $reqVersion, $match)) {
                 $aliases[] = array(
                     'package' => strtolower($reqName),
                     'version' => $this->versionParser->normalize($match[1], $reqVersion),

+ 31 - 0
tests/Composer/Test/Fixtures/installer/alias-with-reference.test

@@ -0,0 +1,31 @@
+--TEST--
+Aliases of referenced packages work
+--COMPOSER--
+{
+    "repositories": [
+        {
+            "type": "package",
+            "package": [
+                {
+                    "name": "a/aliased", "version": "dev-master",
+                    "source": { "reference": "orig", "type": "git", "url": "" }
+                },
+                {
+                    "name": "b/requirer", "version": "1.0.0",
+                    "require": { "a/aliased": "1.0.0" },
+                    "source": { "reference": "1.0.0", "type": "git", "url": "" }
+                }
+            ]
+        }
+    ],
+    "require": {
+        "a/aliased": "dev-master#abcd as 1.0.0",
+        "b/requirer": "*"
+    }
+}
+--RUN--
+install
+--EXPECT--
+Installing a/aliased (dev-master abcd)
+Marking a/aliased (1.0.0) as installed, alias of a/aliased (dev-master abcd)
+Installing b/requirer (1.0.0)