فهرست منبع

Added tests for consistency of data in AutoloadGenerator::sortPackageMap

Martin Hasoň 12 سال پیش
والد
کامیت
9582a8abfa
1فایلهای تغییر یافته به همراه15 افزوده شده و 9 حذف شده
  1. 15 9
      src/Composer/Autoload/AutoloadGenerator.php

+ 15 - 9
src/Composer/Autoload/AutoloadGenerator.php

@@ -449,30 +449,36 @@ FOOTER;
             $groups[$key] = array($item);
             $mainName = $item[0]->getName();
             foreach ($item[0]->getNames() as $name) {
-                $names[$name] = $name == $mainName ? $key : $mainName;
+                if (!isset($names[$name])) {
+                    $names[$name] = $name == $mainName ? $key : $mainName;
+                }
             }
         }
 
         foreach ($packageMap as $item) {
             foreach (array_merge($item[0]->getRequires(), $item[0]->getDevRequires()) as $link) {
-                if (!isset($names[$link->getTarget()])) {
+                $target = $link->getTarget();
+                if (!isset($names[$target])) {
                     continue;
                 }
 
-                $packageKey = $names[$item[0]->getName()];
-                $target = $link->getTarget();
-                $targetKey = is_int($names[$target]) ? $names[$target] : $names[$names[$target]];
+                $targetKey = $names[$target];
+                if (is_string($targetKey)) {
+                    if (!isset($names[$targetKey])) {
+                        continue;
+                    }
+                    $targetKey = $names[$targetKey];
+                }
 
-                if ($targetKey <= $packageKey) {
+                $packageKey = $names[$item[0]->getName()];
+                if ($targetKey <= $packageKey || !isset($groups[$packageKey])) {
                     continue;
                 }
 
-                $groups[$targetKey] = array_merge($groups[$targetKey], $groups[$packageKey]);
-
                 foreach ($groups[$packageKey] as $originalItem) {
+                    $groups[$targetKey][] = $originalItem;
                     $names[$originalItem[0]->getName()] = $targetKey;
                 }
-
                 unset($groups[$packageKey]);
             }
         }