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 ($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()) {
|
||||
$this->resultPackages['non-dev'][] = $resultPackage;
|
||||
unset($this->resultPackages['dev'][$i]);
|
||||
|
|
|
@ -90,7 +90,7 @@ class Problem
|
|||
$packages = array();
|
||||
}
|
||||
|
||||
if ($job && $job['cmd'] === 'install' && empty($packages)) {
|
||||
if ($job && ($job['cmd'] === 'install' || $job['cmd'] === 'fix') && empty($packages)) {
|
||||
|
||||
// handle php/hhvm
|
||||
if ($packageName === 'php' || $packageName === 'php-64bit' || $packageName === 'hhvm') {
|
||||
|
@ -208,6 +208,13 @@ class Problem
|
|||
$packageName = $job['packageName'];
|
||||
$constraint = $job['constraint'];
|
||||
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':
|
||||
$packages = $this->pool->whatProvides($packageName, $constraint);
|
||||
if (!$packages) {
|
||||
|
|
|
@ -12,9 +12,11 @@
|
|||
|
||||
namespace Composer\DependencyResolver;
|
||||
|
||||
use Composer\Package\LinkConstraint\VersionConstraint;
|
||||
use Composer\Package\PackageInterface;
|
||||
use Composer\Package\AliasPackage;
|
||||
use Composer\Repository\PlatformRepository;
|
||||
use Composer\Semver\Constraint\Constraint;
|
||||
|
||||
/**
|
||||
* @author Nils Adermann <naderman@naderman.de>
|
||||
|
@ -254,8 +256,10 @@ class RuleSetGenerator
|
|||
return $impossible;
|
||||
}
|
||||
|
||||
protected function addRulesForRequest($request, $ignorePlatformReqs)
|
||||
protected function addRulesForRequest(Request $request, $ignorePlatformReqs)
|
||||
{
|
||||
$unlockableMap = $request->getUnlockableMap();
|
||||
|
||||
foreach ($request->getFixedPackages() as $package) {
|
||||
$this->addRulesForPackage($package, $ignorePlatformReqs);
|
||||
|
||||
|
@ -263,6 +267,8 @@ class RuleSetGenerator
|
|||
'cmd' => 'fix',
|
||||
'packageName' => $package->getName(),
|
||||
'constraint' => null,
|
||||
'package' => $package,
|
||||
'lockable' => !isset($unlockableMap[$package->id]),
|
||||
'fixed' => true
|
||||
));
|
||||
$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": "fixed-dependency", "version": "1.0.0" }
|
||||
],
|
||||
"packages-dev": null,
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "dev",
|
||||
"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": "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--
|
||||
update b/unstable
|
||||
--EXPECT-LOCK--
|
||||
|
|
|
@ -30,6 +30,21 @@ Test the error output of solver problems.
|
|||
{ "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--
|
||||
update unstable/package requirer/pkg dependency/pkg
|
||||
|
||||
|
@ -38,7 +53,7 @@ update unstable/package requirer/pkg dependency/pkg
|
|||
|
||||
--EXPECT-OUTPUT--
|
||||
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.
|
||||
|
||||
Problem 1
|
||||
|
|
|
@ -28,15 +28,33 @@ When `--with-all-dependencies` is used, Composer\Installer::whitelistUpdateDepen
|
|||
{ "name": "a/a", "version": "1.0.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--
|
||||
update b/b --with-all-dependencies
|
||||
|
||||
--EXPECT-OUTPUT--
|
||||
Loading composer repositories with package information
|
||||
Updating dependencies (including require-dev)
|
||||
Package operations: 0 installs, 2 updates, 0 removals
|
||||
Updating dependencies
|
||||
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
|
||||
Installing dependencies from lock file (including require-dev)
|
||||
Package operations: 0 installs, 2 updates, 0 removals
|
||||
Generating autoload files
|
||||
|
||||
--EXPECT--
|
||||
|
|
Loading…
Reference in New Issue