1
0
Fork 0

Add failing test showing that packages fail to be installed if they match a previous alias which was not removed yet

pull/8811/head
Jordi Boggiano 2020-04-20 21:46:56 +02:00
parent 82502684b2
commit 17ed09be2e
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
2 changed files with 87 additions and 1 deletions

View File

@ -0,0 +1,84 @@
--TEST--
Updating an aliased package where the old alias matches the new package should not fail
--COMPOSER--
{
"repositories": [
{
"type": "package",
"package": [
{
"name": "a/a", "version": "1.10.x-dev",
"extra": { "branch-alias": { "dev-master": "1.10.x-dev" } },
"source": { "type": "git", "url": "", "reference": "downgradedref" }
},
{
"name": "a/a", "version": "dev-master",
"extra": { "branch-alias": { "dev-master": "2.x-dev" } },
"source": { "type": "git", "url": "", "reference": "newref" }
}
]
}
],
"require": {
"a/a": "^1.0"
},
"minimum-stability": "dev"
}
--LOCK--
{
"_": "outdated lock file, should not have to be loaded in an update",
"packages": [
{
"name": "a/a", "version": "dev-master",
"extra": { "branch-alias": { "dev-master": "1.10.x-dev" } },
"source": { "type": "git", "url": "", "reference": "installedref" }
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "dev",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false
}
--INSTALLED--
[
{
"name": "a/a", "version": "dev-master",
"extra": { "branch-alias": { "dev-master": "1.10.x-dev" } },
"source": { "type": "git", "url": "", "reference": "installedref" }
}
]
--RUN--
update
--EXPECT-LOCK--
{
"packages": [
{
"name": "a/a", "version": "1.10.x-dev",
"extra": { "branch-alias": { "dev-master": "1.10.x-dev" } },
"source": { "type": "git", "url": "", "reference": "downgradedref" },
"type": "library"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "dev",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}
--EXPECT-INSTALLED--
[
{
"name": "a/a", "version": "1.10.x-dev",
"source": { "type": "git", "url": "", "reference": "downgradedref" },
"type": "library",
"extra": { "branch-alias": { "dev-master": "1.10.x-dev" } }
}
]
--EXPECT--
Marking a/a (1.10.x-dev installedref) as uninstalled, alias of a/a (dev-master installedref)
Downgrading a/a (dev-master installedref => 1.10.x-dev downgradedref)

View File

@ -66,7 +66,9 @@ class InstallationManagerMock extends InstallationManager
$this->updated[] = array($operation->getInitialPackage(), $operation->getTargetPackage()); $this->updated[] = array($operation->getInitialPackage(), $operation->getTargetPackage());
$this->trace[] = strip_tags((string) $operation); $this->trace[] = strip_tags((string) $operation);
$repo->removePackage($operation->getInitialPackage()); $repo->removePackage($operation->getInitialPackage());
$repo->addPackage(clone $operation->getTargetPackage()); if (!$repo->hasPackage($operation->getTargetPackage())) {
$repo->addPackage(clone $operation->getTargetPackage());
}
} }
public function uninstall(RepositoryInterface $repo, UninstallOperation $operation) public function uninstall(RepositoryInterface $repo, UninstallOperation $operation)