Fix more tests which were lacking lock files for partial updates, display fix jobs in problems
parent
3989a1b8ee
commit
995b4f923e
|
@ -137,6 +137,7 @@ class LockTransaction
|
||||||
|
|
||||||
foreach ($packages as $package) {
|
foreach ($packages as $package) {
|
||||||
foreach ($this->resultPackages['dev'] as $i => $resultPackage) {
|
foreach ($this->resultPackages['dev'] as $i => $resultPackage) {
|
||||||
|
// TODO this comparison is probably insufficient, aliases, what about modified versions? I guess they aren't possible?
|
||||||
if ($package->getName() == $resultPackage->getName()) {
|
if ($package->getName() == $resultPackage->getName()) {
|
||||||
$this->resultPackages['non-dev'][] = $resultPackage;
|
$this->resultPackages['non-dev'][] = $resultPackage;
|
||||||
unset($this->resultPackages['dev'][$i]);
|
unset($this->resultPackages['dev'][$i]);
|
||||||
|
|
|
@ -90,7 +90,7 @@ class Problem
|
||||||
$packages = array();
|
$packages = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($job && $job['cmd'] === 'install' && empty($packages)) {
|
if ($job && ($job['cmd'] === 'install' || $job['cmd'] === 'fix') && empty($packages)) {
|
||||||
|
|
||||||
// handle php/hhvm
|
// handle php/hhvm
|
||||||
if ($packageName === 'php' || $packageName === 'php-64bit' || $packageName === 'hhvm') {
|
if ($packageName === 'php' || $packageName === 'php-64bit' || $packageName === 'hhvm') {
|
||||||
|
@ -208,6 +208,13 @@ class Problem
|
||||||
$packageName = $job['packageName'];
|
$packageName = $job['packageName'];
|
||||||
$constraint = $job['constraint'];
|
$constraint = $job['constraint'];
|
||||||
switch ($job['cmd']) {
|
switch ($job['cmd']) {
|
||||||
|
case 'fix':
|
||||||
|
$package = $job['package'];
|
||||||
|
if ($job['lockable']) {
|
||||||
|
return 'Package '.$package->getPrettyName().' is locked to version '.$package->getPrettyVersion();
|
||||||
|
} else {
|
||||||
|
return 'Package '.$package->getPrettyName().' is present at version '.$package->getPrettyVersion() . ' and cannot be modified by Composer';
|
||||||
|
}
|
||||||
case 'install':
|
case 'install':
|
||||||
$packages = $this->pool->whatProvides($packageName, $constraint);
|
$packages = $this->pool->whatProvides($packageName, $constraint);
|
||||||
if (!$packages) {
|
if (!$packages) {
|
||||||
|
|
|
@ -12,9 +12,11 @@
|
||||||
|
|
||||||
namespace Composer\DependencyResolver;
|
namespace Composer\DependencyResolver;
|
||||||
|
|
||||||
|
use Composer\Package\LinkConstraint\VersionConstraint;
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
use Composer\Package\AliasPackage;
|
use Composer\Package\AliasPackage;
|
||||||
use Composer\Repository\PlatformRepository;
|
use Composer\Repository\PlatformRepository;
|
||||||
|
use Composer\Semver\Constraint\Constraint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Nils Adermann <naderman@naderman.de>
|
* @author Nils Adermann <naderman@naderman.de>
|
||||||
|
@ -254,8 +256,10 @@ class RuleSetGenerator
|
||||||
return $impossible;
|
return $impossible;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function addRulesForRequest($request, $ignorePlatformReqs)
|
protected function addRulesForRequest(Request $request, $ignorePlatformReqs)
|
||||||
{
|
{
|
||||||
|
$unlockableMap = $request->getUnlockableMap();
|
||||||
|
|
||||||
foreach ($request->getFixedPackages() as $package) {
|
foreach ($request->getFixedPackages() as $package) {
|
||||||
$this->addRulesForPackage($package, $ignorePlatformReqs);
|
$this->addRulesForPackage($package, $ignorePlatformReqs);
|
||||||
|
|
||||||
|
@ -263,6 +267,8 @@ class RuleSetGenerator
|
||||||
'cmd' => 'fix',
|
'cmd' => 'fix',
|
||||||
'packageName' => $package->getName(),
|
'packageName' => $package->getName(),
|
||||||
'constraint' => null,
|
'constraint' => null,
|
||||||
|
'package' => $package,
|
||||||
|
'lockable' => !isset($unlockableMap[$package->id]),
|
||||||
'fixed' => true
|
'fixed' => true
|
||||||
));
|
));
|
||||||
$this->addRule(RuleSet::TYPE_JOB, $rule);
|
$this->addRule(RuleSet::TYPE_JOB, $rule);
|
||||||
|
|
|
@ -25,7 +25,7 @@ Install from a lock file that deleted a package
|
||||||
{ "name": "whitelisted", "version": "1.1.0" },
|
{ "name": "whitelisted", "version": "1.1.0" },
|
||||||
{ "name": "fixed-dependency", "version": "1.0.0" }
|
{ "name": "fixed-dependency", "version": "1.0.0" }
|
||||||
],
|
],
|
||||||
"packages-dev": null,
|
"packages-dev": [],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "dev",
|
"minimum-stability": "dev",
|
||||||
"stability-flags": [],
|
"stability-flags": [],
|
||||||
|
|
|
@ -28,6 +28,23 @@ Partial update without lock file should update everything whitelisted, remove ov
|
||||||
{ "name": "c/uptodate", "version": "1.0.0" },
|
{ "name": "c/uptodate", "version": "1.0.0" },
|
||||||
{ "name": "d/removed", "version": "1.0.0" }
|
{ "name": "d/removed", "version": "1.0.0" }
|
||||||
]
|
]
|
||||||
|
--LOCK--
|
||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{ "name": "a/old", "version": "1.0.0" },
|
||||||
|
{ "name": "b/unstable", "version": "1.1.0-alpha" },
|
||||||
|
{ "name": "c/uptodate", "version": "1.0.0" },
|
||||||
|
{ "name": "d/removed", "version": "1.0.0" }
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "dev",
|
||||||
|
"stability-flags": [],
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
--RUN--
|
--RUN--
|
||||||
update b/unstable
|
update b/unstable
|
||||||
--EXPECT-LOCK--
|
--EXPECT-LOCK--
|
||||||
|
|
|
@ -30,6 +30,21 @@ Test the error output of solver problems.
|
||||||
{ "name": "stable-requiree-excluded/pkg", "version": "1.0.0" }
|
{ "name": "stable-requiree-excluded/pkg", "version": "1.0.0" }
|
||||||
]
|
]
|
||||||
|
|
||||||
|
--LOCK--
|
||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{ "name": "stable-requiree-excluded/pkg", "version": "1.0.0" }
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "dev",
|
||||||
|
"stability-flags": [],
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
|
|
||||||
--RUN--
|
--RUN--
|
||||||
update unstable/package requirer/pkg dependency/pkg
|
update unstable/package requirer/pkg dependency/pkg
|
||||||
|
|
||||||
|
@ -38,7 +53,7 @@ update unstable/package requirer/pkg dependency/pkg
|
||||||
|
|
||||||
--EXPECT-OUTPUT--
|
--EXPECT-OUTPUT--
|
||||||
Loading composer repositories with package information
|
Loading composer repositories with package information
|
||||||
Updating dependencies (including require-dev)
|
Updating dependencies
|
||||||
Your requirements could not be resolved to an installable set of packages.
|
Your requirements could not be resolved to an installable set of packages.
|
||||||
|
|
||||||
Problem 1
|
Problem 1
|
||||||
|
|
|
@ -28,15 +28,33 @@ When `--with-all-dependencies` is used, Composer\Installer::whitelistUpdateDepen
|
||||||
{ "name": "a/a", "version": "1.0.0" },
|
{ "name": "a/a", "version": "1.0.0" },
|
||||||
{ "name": "b/b", "version": "1.0.0", "require": { "a/a": "~1.0" } }
|
{ "name": "b/b", "version": "1.0.0", "require": { "a/a": "~1.0" } }
|
||||||
]
|
]
|
||||||
|
--LOCK--
|
||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{ "name": "a/a", "version": "1.0.0" },
|
||||||
|
{ "name": "b/b", "version": "1.0.0", "require": { "a/a": "~1.0" } }
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "dev",
|
||||||
|
"stability-flags": [],
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
--RUN--
|
--RUN--
|
||||||
update b/b --with-all-dependencies
|
update b/b --with-all-dependencies
|
||||||
|
|
||||||
--EXPECT-OUTPUT--
|
--EXPECT-OUTPUT--
|
||||||
Loading composer repositories with package information
|
Loading composer repositories with package information
|
||||||
Updating dependencies (including require-dev)
|
Updating dependencies
|
||||||
Package operations: 0 installs, 2 updates, 0 removals
|
Lock file operations: 0 installs, 2 updates, 0 removals
|
||||||
|
- Updating b/b (1.0.0) to b/b (1.1.0)
|
||||||
|
- Updating a/a (1.0.0) to a/a (1.1.0)
|
||||||
Writing lock file
|
Writing lock file
|
||||||
|
Installing dependencies from lock file (including require-dev)
|
||||||
|
Package operations: 0 installs, 2 updates, 0 removals
|
||||||
Generating autoload files
|
Generating autoload files
|
||||||
|
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
|
|
Loading…
Reference in New Issue