From 3cf31da414d92a2c063f7ec1467c7bc40fa2efee Mon Sep 17 00:00:00 2001 From: Alessandro Lai Date: Thu, 30 Nov 2017 15:07:08 +0100 Subject: [PATCH] Fix root package not having a pretty version when detecting from VCS, fixes #6845, closes #6847 --- .../Package/Loader/RootPackageLoader.php | 17 ++++++++------- .../Package/Loader/RootPackageLoaderTest.php | 21 +++++++++++++++++++ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/Composer/Package/Loader/RootPackageLoader.php b/src/Composer/Package/Loader/RootPackageLoader.php index d384b1751..04b44f7b6 100644 --- a/src/Composer/Package/Loader/RootPackageLoader.php +++ b/src/Composer/Package/Loader/RootPackageLoader.php @@ -68,22 +68,25 @@ class RootPackageLoader extends ArrayLoader } $autoVersioned = false; if (!isset($config['version'])) { + $commit = null; + // override with env var if available if (getenv('COMPOSER_ROOT_VERSION')) { - $version = getenv('COMPOSER_ROOT_VERSION'); - $commit = null; + $config['version'] = getenv('COMPOSER_ROOT_VERSION'); } else { $versionData = $this->versionGuesser->guessVersion($config, $cwd ?: getcwd()); - $version = $versionData['version']; - $commit = $versionData['commit']; + if ($versionData) { + $config['version'] = $versionData['pretty_version']; + $config['version_normalized'] = $versionData['version']; + $commit = $versionData['commit']; + } } - if (!$version) { - $version = '1.0.0'; + if (!isset($config['version'])) { + $config['version'] = '1.0.0'; $autoVersioned = true; } - $config['version'] = $version; if ($commit) { $config['source'] = array( 'type' => '', diff --git a/tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php b/tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php index 951645971..7a46b4992 100644 --- a/tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php +++ b/tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php @@ -17,6 +17,7 @@ use Composer\Package\Loader\RootPackageLoader; use Composer\Package\BasePackage; use Composer\Package\Version\VersionGuesser; use Composer\Semver\VersionParser; +use Prophecy\Argument; class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase { @@ -91,6 +92,26 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase $this->assertEquals("No version set (parsed as 1.0.0)", $package->getPrettyVersion()); } + public function testPrettyVersionForRootPackageInVersionBranch() + { + // see #6845 + $manager = $this->prophesize('\\Composer\\Repository\\RepositoryManager'); + $versionGuesser = $this->prophesize('\\Composer\\Package\\Version\\VersionGuesser'); + $versionGuesser->guessVersion(Argument::cetera()) + ->willReturn(array( + 'name' => 'A', + 'version' => '3.0.9999999.9999999-dev', + 'pretty_version' => '3.0-dev', + 'commit' => 'aabbccddee', + )); + $config = new Config; + $config->merge(array('repositories' => array('packagist' => false))); + $loader = new RootPackageLoader($manager->reveal(), $config, null, $versionGuesser->reveal()); + $package = $loader->load(array()); + + $this->assertEquals('3.0-dev', $package->getPrettyVersion()); + } + public function testFeatureBranchPrettyVersion() { if (!function_exists('proc_open')) {