From 1fca6be3bfd5dbd88b4b5e0389fa080b8fcd2f12 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Sat, 21 Nov 2015 02:35:40 +0000 Subject: [PATCH] Fix detection of the root package version to always use the correct cwd --- src/Composer/Factory.php | 2 +- src/Composer/Package/Loader/RootPackageLoader.php | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Composer/Factory.php b/src/Composer/Factory.php index f85266b8b..97e859904 100644 --- a/src/Composer/Factory.php +++ b/src/Composer/Factory.php @@ -275,7 +275,7 @@ class Factory $parser = new VersionParser; $guesser = new VersionGuesser($config, new ProcessExecutor($io), $parser); $loader = new Package\Loader\RootPackageLoader($rm, $config, $parser, $guesser); - $package = $loader->load($localConfig); + $package = $loader->load($localConfig, 'Composer\Package\RootPackage', $cwd); $composer->setPackage($package); // initialize installation manager diff --git a/src/Composer/Package/Loader/RootPackageLoader.php b/src/Composer/Package/Loader/RootPackageLoader.php index 06c70e8b0..765cb667b 100644 --- a/src/Composer/Package/Loader/RootPackageLoader.php +++ b/src/Composer/Package/Loader/RootPackageLoader.php @@ -13,6 +13,7 @@ namespace Composer\Package\Loader; use Composer\Package\BasePackage; +use Composer\Package\PackageInterface; use Composer\Package\AliasPackage; use Composer\Config; use Composer\Factory; @@ -54,7 +55,13 @@ class RootPackageLoader extends ArrayLoader $this->versionGuesser = $versionGuesser ?: new VersionGuesser($config, new ProcessExecutor(), $this->versionParser); } - public function load(array $config, $class = 'Composer\Package\RootPackage') + /** + * @param array $config package data + * @param string $class FQCN to be instantiated + * @param string $cwd cwd of the root package to be used to guess the version if it is not provided + * @return PackageInterface + */ + public function load(array $config, $class = 'Composer\Package\RootPackage', $cwd = null) { if (!isset($config['name'])) { $config['name'] = '__root__'; @@ -65,7 +72,7 @@ class RootPackageLoader extends ArrayLoader if (getenv('COMPOSER_ROOT_VERSION')) { $version = getenv('COMPOSER_ROOT_VERSION'); } else { - $version = $this->versionGuesser->guessVersion($config, getcwd()); + $version = $this->versionGuesser->guessVersion($config, $cwd ?: getcwd()); } if (!$version) {