1
0
Fork 0

Fix require regression with --fixed, fixes #11247

pull/11283/head
Jordi Boggiano 2023-01-19 21:35:50 +01:00
parent 0d96fd8149
commit f6f972a699
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
2 changed files with 31 additions and 3 deletions

View File

@ -338,7 +338,7 @@ EOT
try {
$result = $this->doUpdate($input, $output, $io, $requirements, $requireKey, $removeKey);
if ($result === 0 && count($requirementsToGuess) > 0) {
$result = $this->updateRequirementsAfterResolution($requirementsToGuess, $requireKey, $removeKey, $sortPackages, $input->getOption('dry-run'));
$result = $this->updateRequirementsAfterResolution($requirementsToGuess, $requireKey, $removeKey, $sortPackages, $input->getOption('dry-run'), $input->getOption('fixed'));
}
return $result;
@ -506,7 +506,7 @@ EOT
/**
* @param list<string> $requirementsToUpdate
*/
private function updateRequirementsAfterResolution(array $requirementsToUpdate, string $requireKey, string $removeKey, bool $sortPackages, bool $dryRun): int
private function updateRequirementsAfterResolution(array $requirementsToUpdate, string $requireKey, string $removeKey, bool $sortPackages, bool $dryRun, bool $fixed): int
{
$composer = $this->requireComposer();
$locker = $composer->getLocker();
@ -523,7 +523,11 @@ EOT
continue;
}
if ($fixed) {
$requirements[$packageName] = $package->getPrettyVersion();
} else {
$requirements[$packageName] = $versionSelector->findRecommendedRequireVersion($package);
}
$this->getIO()->writeError(sprintf(
'Using version <info>%s</info> for <info>%s</info>',
$requirements[$packageName],

View File

@ -236,6 +236,30 @@ Lock file operations: 2 installs, 0 updates, 0 removals
- Locking existing/dep (1.1.0)
- Locking required/pkg (1.1.0)
Using version ^1.1 for required/pkg
OUTPUT
];
yield 'use exact constraint with --fixed' => [
[
'type' => 'project',
'repositories' => [
'packages' => [
'type' => 'package',
'package' => [
['name' => 'required/pkg', 'version' => '1.1.0'],
],
],
],
],
['packages' => ['required/pkg'], '--no-install' => true, '--fixed' => true],
<<<OUTPUT
./composer.json has been updated
Running composer update required/pkg
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking required/pkg (1.1.0)
Using version 1.1.0 for required/pkg
OUTPUT
];
}