Bläddra i källkod

resolve issue

Rob Bast 9 år sedan
förälder
incheckning
0e584aa980

+ 1 - 0
src/Composer/Installer.php

@@ -1199,6 +1199,7 @@ class Installer
 
 
                     foreach ($requirePackages as $requirePackage) {
                     foreach ($requirePackages as $requirePackage) {
                         if (isset($skipPackages[$requirePackage->getName()])) {
                         if (isset($skipPackages[$requirePackage->getName()])) {
+                            $this->io->writeError('<warning>Dependency "' . $requirePackage->getName() . '" is also a root requirement, but is not explicitly whitelisted. Ignoring.</warning>');
                             continue;
                             continue;
                         }
                         }
                         $packageQueue->enqueue($requirePackage);
                         $packageQueue->enqueue($requirePackage);

+ 47 - 0
tests/Composer/Test/Fixtures/installer/github-issues-4795.test

@@ -0,0 +1,47 @@
+--TEST--
+
+See Github issue #4795 ( github.com/composer/composer/issues/4795 ).
+
+Composer\Installer::whitelistUpdateDependencies intentionally ignores root requirements even if said package is also a
+dependency of one the requirements that is whitelisted for update.
+
+--COMPOSER--
+{
+    "repositories": [
+        {
+            "type": "package",
+            "package": [
+                { "name": "a", "version": "1.0.0" },
+                { "name": "a", "version": "1.1.0" },
+                { "name": "b", "version": "1.0.0", "require": { "a": "~1.0" } },
+                { "name": "b", "version": "1.1.0", "require": { "a": "~1.1" } },
+                { "name": "c", "version": "1.0.0", "require": { "a": "~1.0" } }
+            ]
+        }
+    ],
+    "require": {
+        "a": "~1.0",
+        "b": "~1.0",
+        "c": "~1.0"
+    }
+}
+
+--INSTALLED--
+[
+    { "name": "a", "version": "1.0.0" },
+    { "name": "b", "version": "1.0.0", "require": { "a": "~1.0" } },
+    { "name": "c", "version": "1.0.0", "require": { "a": "~1.0" } }
+]
+
+--RUN--
+update B --with-dependencies
+
+--EXPECT-OUTPUT--
+<warning>Dependency "a" is also a root requirement, but is not explicitly whitelisted. Ignoring.</warning>
+<info>Loading composer repositories with package information</info>
+<info>Updating dependencies (including require-dev)</info>
+Nothing to install or update
+<info>Writing lock file</info>
+<info>Generating autoload files</info>
+
+--EXPECT--

+ 0 - 33
tests/Composer/Test/Fixtures/installer/update-refs-issue-4795.test

@@ -1,33 +0,0 @@
---TEST--
-Refs issue #4795
---COMPOSER--
-{
-    "repositories": [
-        {
-            "type": "package",
-            "package": [
-                { "name": "A", "version": "1.0.0" },
-                { "name": "A", "version": "1.1.0" },
-                { "name": "B", "version": "1.0.0", "require": { "A": "~1.0" } },
-                { "name": "B", "version": "1.1.0", "require": { "A": "~1.1" } },
-                { "name": "C", "version": "1.0.0", "require": { "A": "~1.0" } }
-            ]
-        }
-    ],
-    "require": {
-        "A": "~1.0",
-        "B": "~1.0",
-        "C": "~1.0"
-    }
-}
---INSTALLED--
-[
-    { "name": "A", "version": "1.0.0" },
-    { "name": "B", "version": "1.0.0", "require": { "A": "~1.0" } },
-    { "name": "C", "version": "1.0.0", "require": { "A": "~1.0" } }
-]
---RUN--
-update B --with-dependencies
---EXPECT--
-Updating A (1.0.0) to A (1.1.0)
-Updating B (1.0.0) to B (1.1.0)