Handle stability changes correctly, fixes #877
On update, packages that are less stable than the minimum-stability allows will now be downgraded to their correct versions, even if they were installed as unstable already.main
parent
c9f0e458a2
commit
ee60df708d
@ -0,0 +1,65 @@
|
|||||||
|
--TEST--
|
||||||
|
Partial update from lock file should apply lock file and downgrade unstable packages even if not whitelisted
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{ "name": "a/old", "version": "1.0.0" },
|
||||||
|
{ "name": "a/old", "version": "2.0.0" },
|
||||||
|
{ "name": "b/unstable", "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" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"a/old": "*",
|
||||||
|
"b/unstable": "*",
|
||||||
|
"c/uptodate": "*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--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": "stable",
|
||||||
|
"stability-flags": {
|
||||||
|
"b/unstable": 15
|
||||||
|
},
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
|
--INSTALLED--
|
||||||
|
[
|
||||||
|
{ "name": "a/old", "version": "0.9.0" },
|
||||||
|
{ "name": "b/unstable", "version": "1.1.0-alpha" },
|
||||||
|
{ "name": "c/uptodate", "version": "2.0.0" }
|
||||||
|
]
|
||||||
|
--RUN--
|
||||||
|
update c/uptodate
|
||||||
|
--EXPECT-LOCK--
|
||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{ "name": "a/old", "version": "1.0.0", "type": "library" },
|
||||||
|
{ "name": "b/unstable", "version": "1.0.0", "type": "library" },
|
||||||
|
{ "name": "c/uptodate", "version": "2.0.0", "type": "library" }
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": [],
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
|
--EXPECT--
|
||||||
|
Updating a/old (0.9.0) to a/old (1.0.0)
|
||||||
|
Updating b/unstable (1.1.0-alpha) to b/unstable (1.0.0)
|
@ -0,0 +1,66 @@
|
|||||||
|
--TEST--
|
||||||
|
Partial update from lock file should update everything to the state of the lock, remove overly unstable packages
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{ "name": "a/old", "version": "1.0.0" },
|
||||||
|
{ "name": "a/old", "version": "2.0.0" },
|
||||||
|
{ "name": "b/unstable", "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" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"a/old": "*",
|
||||||
|
"b/unstable": "*",
|
||||||
|
"c/uptodate": "*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--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": "stable",
|
||||||
|
"stability-flags": {
|
||||||
|
"b/unstable": 15
|
||||||
|
},
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
|
--INSTALLED--
|
||||||
|
[
|
||||||
|
{ "name": "a/old", "version": "0.9.0" },
|
||||||
|
{ "name": "b/unstable", "version": "1.1.0-alpha" },
|
||||||
|
{ "name": "c/uptodate", "version": "2.0.0" }
|
||||||
|
]
|
||||||
|
--RUN--
|
||||||
|
update b/unstable
|
||||||
|
--EXPECT-LOCK--
|
||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{ "name": "a/old", "version": "1.0.0", "type": "library" },
|
||||||
|
{ "name": "b/unstable", "version": "1.0.0", "type": "library" },
|
||||||
|
{ "name": "c/uptodate", "version": "1.0.0", "type": "library" }
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": [],
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
|
--EXPECT--
|
||||||
|
Updating a/old (0.9.0) to a/old (1.0.0)
|
||||||
|
Updating c/uptodate (2.0.0) to c/uptodate (1.0.0)
|
||||||
|
Updating b/unstable (1.1.0-alpha) to b/unstable (1.0.0)
|
@ -0,0 +1,49 @@
|
|||||||
|
--TEST--
|
||||||
|
Partial update without lock file should update everything whitelisted, remove overly unstable packages
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{ "name": "a/old", "version": "1.0.0" },
|
||||||
|
{ "name": "a/old", "version": "2.0.0" },
|
||||||
|
{ "name": "b/unstable", "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" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"a/old": "*",
|
||||||
|
"b/unstable": "*",
|
||||||
|
"c/uptodate": "*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--INSTALLED--
|
||||||
|
[
|
||||||
|
{ "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" }
|
||||||
|
]
|
||||||
|
--RUN--
|
||||||
|
update b/unstable
|
||||||
|
--EXPECT-LOCK--
|
||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{ "name": "a/old", "version": "1.0.0", "type": "library" },
|
||||||
|
{ "name": "b/unstable", "version": "1.0.0", "type": "library" },
|
||||||
|
{ "name": "c/uptodate", "version": "1.0.0", "type": "library" },
|
||||||
|
{ "name": "d/removed", "version": "1.0.0", "type": "library" }
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": [],
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
|
--EXPECT--
|
||||||
|
Updating b/unstable (1.1.0-alpha) to b/unstable (1.0.0)
|
@ -0,0 +1,49 @@
|
|||||||
|
--TEST--
|
||||||
|
Downgrading from unstable to more stable package should work even if already installed
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{
|
||||||
|
"name": "a/a", "version": "dev-master",
|
||||||
|
"source": { "reference": "abcd", "url": "", "type": "git" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "a/a", "version": "1.0.0",
|
||||||
|
"source": { "reference": "1.0.0", "url": "", "type": "git" },
|
||||||
|
"dist": { "reference": "1.0.0", "url": "", "type": "zip", "shasum": "" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "b/b", "version": "dev-master",
|
||||||
|
"source": { "reference": "abcd", "url": "", "type": "git" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "b/b", "version": "1.0.0",
|
||||||
|
"source": { "reference": "1.0.0", "url": "", "type": "git" },
|
||||||
|
"dist": { "reference": "1.0.0", "url": "", "type": "zip", "shasum": "" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"a/a": "*",
|
||||||
|
"b/b": "*@dev"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--INSTALLED--
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "a/a", "version": "dev-master",
|
||||||
|
"source": { "reference": "abcd", "url": "", "type": "git" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "b/b", "version": "dev-master",
|
||||||
|
"source": { "reference": "abcd", "url": "", "type": "git" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
--RUN--
|
||||||
|
update
|
||||||
|
--EXPECT--
|
||||||
|
Updating a/a (dev-master abcd) to a/a (1.0.0)
|
Loading…
Reference in New Issue