1
0
Fork 0

Fix require command picking of specific versions, fixes #6859

pull/6875/head
Jordi Boggiano 2017-12-01 14:30:51 +01:00
parent fb8fecd4a5
commit 3976d9f242
1 changed files with 6 additions and 5 deletions

View File

@ -376,7 +376,7 @@ EOT
));
} else {
// check that the specified version/constraint exists before we proceed
$this->findBestVersionForPackage($input, $requirement['name'], $phpVersion, 'dev', $requirement['version']);
$this->findBestVersionForPackage($input, $requirement['name'], $phpVersion, $preferredStability, $requirement['version'], 'dev');
}
$result[] = $requirement['name'] . ' ' . $requirement['version'];
@ -596,10 +596,10 @@ EOT
return false !== filter_var($email, FILTER_VALIDATE_EMAIL);
}
private function getPool(InputInterface $input)
private function getPool(InputInterface $input, $minimumStability = null)
{
if (!$this->pool) {
$this->pool = new Pool($this->getMinimumStability($input));
$this->pool = new Pool($minimumStability ?: $this->getMinimumStability($input));
$this->pool->addRepository($this->getRepos());
}
@ -631,13 +631,14 @@ EOT
* @param string $name
* @param string $phpVersion
* @param string $preferredStability
* @param string $minimumStability
* @throws \InvalidArgumentException
* @return string
*/
private function findBestVersionForPackage(InputInterface $input, $name, $phpVersion, $preferredStability = 'stable', $requiredVersion = null)
private function findBestVersionForPackage(InputInterface $input, $name, $phpVersion, $preferredStability = 'stable', $requiredVersion = null, $minimumStability = null)
{
// find the latest version allowed in this pool
$versionSelector = new VersionSelector($this->getPool($input));
$versionSelector = new VersionSelector($this->getPool($input, $minimumStability));
$package = $versionSelector->findBestCandidate($name, $requiredVersion, $phpVersion, $preferredStability);
if (!$package) {