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