1
0
Fork 0

Fix default version to be semver parseable, fixes #9342

pull/9348/head
Jordi Boggiano 2020-10-25 22:22:19 +01:00
parent 3dfbd9e9e9
commit 4b8c2aa121
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
4 changed files with 9 additions and 4 deletions

View File

@ -14,6 +14,7 @@ namespace Composer\Command;
use Composer\Package\Link; use Composer\Package\Link;
use Composer\Package\PackageInterface; use Composer\Package\PackageInterface;
use Composer\Package\RootPackage;
use Composer\Repository\InstalledArrayRepository; use Composer\Repository\InstalledArrayRepository;
use Composer\Repository\CompositeRepository; use Composer\Repository\CompositeRepository;
use Composer\Repository\RootPackageRepository; use Composer\Repository\RootPackageRepository;
@ -167,7 +168,7 @@ class BaseDependencyCommand extends BaseCommand
continue; continue;
} }
$doubles[$unique] = true; $doubles[$unique] = true;
$version = (strpos($package->getPrettyVersion(), 'No version set') === 0) ? '-' : $package->getPrettyVersion(); $version = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '-' : $package->getPrettyVersion();
$rows[] = array($package->getPrettyName(), $version, $link->getDescription(), sprintf('%s (%s)', $link->getTarget(), $link->getPrettyConstraint())); $rows[] = array($package->getPrettyName(), $version, $link->getDescription(), sprintf('%s (%s)', $link->getTarget(), $link->getPrettyConstraint()));
if ($children) { if ($children) {
$queue = array_merge($queue, $children); $queue = array_merge($queue, $children);
@ -223,7 +224,7 @@ class BaseDependencyCommand extends BaseCommand
$color = $this->colors[$level % count($this->colors)]; $color = $this->colors[$level % count($this->colors)];
$prevColor = $this->colors[($level - 1) % count($this->colors)]; $prevColor = $this->colors[($level - 1) % count($this->colors)];
$isLast = (++$idx == $count); $isLast = (++$idx == $count);
$versionText = (strpos($package->getPrettyVersion(), 'No version set') === 0) ? '' : $package->getPrettyVersion(); $versionText = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '' : $package->getPrettyVersion();
$packageText = rtrim(sprintf('<%s>%s</%1$s> %s', $color, $package->getPrettyName(), $versionText)); $packageText = rtrim(sprintf('<%s>%s</%1$s> %s', $color, $package->getPrettyName(), $versionText));
$linkText = sprintf('%s <%s>%s</%2$s> %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint()); $linkText = sprintf('%s <%s>%s</%2$s> %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint());
$circularWarn = $children === false ? '(circular dependency aborted here)' : ''; $circularWarn = $children === false ? '(circular dependency aborted here)' : '';

View File

@ -20,6 +20,7 @@ use Composer\Package\RootPackageInterface;
use Composer\Repository\RepositoryFactory; use Composer\Repository\RepositoryFactory;
use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionGuesser;
use Composer\Package\Version\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Package\RootPackage;
use Composer\Repository\RepositoryManager; use Composer\Repository\RepositoryManager;
use Composer\Util\ProcessExecutor; use Composer\Util\ProcessExecutor;
@ -112,7 +113,7 @@ class RootPackageLoader extends ArrayLoader
} }
if ($autoVersioned) { if ($autoVersioned) {
$realPackage->replaceVersion($realPackage->getVersion(), 'No version set (parsed as 1.0.0)'); $realPackage->replaceVersion($realPackage->getVersion(), RootPackage::DEFAULT_PRETTY_VERSION);
} }
if (isset($config['minimum-stability'])) { if (isset($config['minimum-stability'])) {

View File

@ -19,6 +19,8 @@ namespace Composer\Package;
*/ */
class RootPackage extends CompletePackage implements RootPackageInterface class RootPackage extends CompletePackage implements RootPackageInterface
{ {
const DEFAULT_PRETTY_VERSION = '1.0.0+no-version-set';
protected $minimumStability = 'stable'; protected $minimumStability = 'stable';
protected $preferStable = false; protected $preferStable = false;
protected $stabilityFlags = array(); protected $stabilityFlags = array();

View File

@ -15,6 +15,7 @@ namespace Composer\Test\Package\Loader;
use Composer\Config; use Composer\Config;
use Composer\Package\Loader\RootPackageLoader; use Composer\Package\Loader\RootPackageLoader;
use Composer\Package\BasePackage; use Composer\Package\BasePackage;
use Composer\Package\RootPackage;
use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionGuesser;
use Composer\Semver\VersionParser; use Composer\Semver\VersionParser;
use Composer\Test\TestCase; use Composer\Test\TestCase;
@ -90,7 +91,7 @@ class RootPackageLoaderTest extends TestCase
$package = $loader->load(array()); $package = $loader->load(array());
$this->assertEquals("1.0.0.0", $package->getVersion()); $this->assertEquals("1.0.0.0", $package->getVersion());
$this->assertEquals("No version set (parsed as 1.0.0)", $package->getPrettyVersion()); $this->assertEquals(RootPackage::DEFAULT_PRETTY_VERSION, $package->getPrettyVersion());
} }
public function testPrettyVersionForRootPackageInVersionBranch() public function testPrettyVersionForRootPackageInVersionBranch()