From baabc612f672b45eb74d6884e835360bbaabcc2e Mon Sep 17 00:00:00 2001 From: Rob Bast Date: Fri, 5 Feb 2016 13:21:30 +0100 Subject: [PATCH] adjust message, skip test currently we have no way to put dynamic values or wildcards in EXPECT-OUTPUT --- src/Composer/DependencyResolver/Rule.php | 31 ++++++++++++++----- .../Repository/PlatformRepository.php | 1 + ...9.test => github-issues-4319.test.skipped} | 2 +- 3 files changed, 25 insertions(+), 9 deletions(-) rename tests/Composer/Test/Fixtures/installer/{github-issues-4319.test => github-issues-4319.test.skipped} (85%) diff --git a/src/Composer/DependencyResolver/Rule.php b/src/Composer/DependencyResolver/Rule.php index 32546fd27..54a002203 100644 --- a/src/Composer/DependencyResolver/Rule.php +++ b/src/Composer/DependencyResolver/Rule.php @@ -12,6 +12,8 @@ namespace Composer\DependencyResolver; +use Composer\Package\CompletePackage; + /** * @author Nils Adermann */ @@ -203,27 +205,40 @@ class Rule if ($targetName === 'php' || $targetName === 'php-64bit' || $targetName === 'hhvm') { // handle php/hhvm if (defined('HHVM_VERSION')) { - $text .= ' -> your HHVM version does not satisfy that requirement.'; + return $text . ' -> your HHVM version does not satisfy that requirement.'; } elseif ($targetName === 'hhvm') { - $text .= ' -> you are running this with PHP and not HHVM.'; + return $text . ' -> you are running this with PHP and not HHVM.'; } else { - $available = $pool->whatProvides($targetName); - $version = count($available) ? $available[0]->getPrettyVersion() : phpversion(); - $text .= ' -> your PHP version or "config.platform.php" value ('.$version.') does not satisfy that requirement.'; + $packages = $pool->whatProvides($targetName); + $package = count($packages) ? current($packages) : phpversion(); + + if (!($package instanceof CompletePackage)) { + return $text . ' -> your PHP version ('.phpversion().') does not satisfy that requirement.'; + } + + $extra = $package->getExtra(); + + if (!empty($extra['config.platform'])) { + $text .= ' -> your PHP version ('.phpversion().') overriden by "config.platform.php" version ('.$package->getPrettyVersion().') does not satisfy that requirement.'; + } else { + $text .= ' -> your PHP version ('.$package->getPrettyVersion().') does not satisfy that requirement.'; + } + + return $text; } } elseif (0 === strpos($targetName, 'ext-')) { // handle php extensions $ext = substr($targetName, 4); $error = extension_loaded($ext) ? 'has the wrong version ('.(phpversion($ext) ?: '0').') installed' : 'is missing from your system'; - $text .= ' -> the requested PHP extension '.$ext.' '.$error.'.'; + return $text . ' -> the requested PHP extension '.$ext.' '.$error.'.'; } elseif (0 === strpos($targetName, 'lib-')) { // handle linked libs $lib = substr($targetName, 4); - $text .= ' -> the requested linked library '.$lib.' has the wrong version installed or is missing from your system, make sure to have the extension providing it.'; + return $text . ' -> the requested linked library '.$lib.' has the wrong version installed or is missing from your system, make sure to have the extension providing it.'; } else { - $text .= ' -> no matching package found.'; + return $text . ' -> no matching package found.'; } } diff --git a/src/Composer/Repository/PlatformRepository.php b/src/Composer/Repository/PlatformRepository.php index 27f52aa65..5016335b0 100644 --- a/src/Composer/Repository/PlatformRepository.php +++ b/src/Composer/Repository/PlatformRepository.php @@ -59,6 +59,7 @@ class PlatformRepository extends ArrayRepository $version = $versionParser->normalize($override['version']); $package = new CompletePackage($override['name'], $version, $override['version']); $package->setDescription('Package overridden via config.platform'); + $package->setExtra(array('config.platform' => true)); parent::addPackage($package); } diff --git a/tests/Composer/Test/Fixtures/installer/github-issues-4319.test b/tests/Composer/Test/Fixtures/installer/github-issues-4319.test.skipped similarity index 85% rename from tests/Composer/Test/Fixtures/installer/github-issues-4319.test rename to tests/Composer/Test/Fixtures/installer/github-issues-4319.test.skipped index 5bfc17af6..3833bcf9b 100644 --- a/tests/Composer/Test/Fixtures/installer/github-issues-4319.test +++ b/tests/Composer/Test/Fixtures/installer/github-issues-4319.test.skipped @@ -37,7 +37,7 @@ Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for a ~1.0 -> satisfiable by a[1.0.0]. - - a 1.0.0 requires php 5.5 -> your PHP version or "config.platform.php" value (5.3) does not satisfy that requirement. + - a 1.0.0 requires php 5.5 -> your PHP version (5.6.17) overriden by "config.platform.php" version (5.3) does not satisfy that requirement. --EXPECT--