Merge pull request #9477 from naderman/fix-alias-conflicts
Explicit conflicts should conflict with aliases of packages toomain
commit
d00edab884
@ -0,0 +1,38 @@
|
|||||||
|
--TEST--
|
||||||
|
Test that a root package conflict with a branch alias leads to an error, even if the branch alias isn't required.
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{ "name": "some/dep", "version": "1.0.0" },
|
||||||
|
{ "name": "some/dep", "version": "1.1.0" },
|
||||||
|
{ "name": "some/dep", "version": "1.2.0" },
|
||||||
|
{ "name": "some/dep", "version": "dev-main", "extra": {"branch-alias": {"dev-main": "1.3.x-dev"} } },
|
||||||
|
{ "name": "some/dep", "version": "1.2.x-dev" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"some/dep": "dev-main"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"some/dep": ">=1.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--RUN--
|
||||||
|
update
|
||||||
|
--EXPECT-EXIT-CODE--
|
||||||
|
2
|
||||||
|
--EXPECT-OUTPUT--
|
||||||
|
Loading composer repositories with package information
|
||||||
|
Updating dependencies
|
||||||
|
Your requirements could not be resolved to an installable set of packages.
|
||||||
|
|
||||||
|
Problem 1
|
||||||
|
- __root__ is present at version 1.0.0+no-version-set and cannot be modified by Composer
|
||||||
|
- some/dep 1.3.x-dev is an alias of some/dep dev-main and must be installed with it.
|
||||||
|
- __root__ 1.0.0+no-version-set conflicts with some/dep 1.3.x-dev.
|
||||||
|
- Root composer.json requires some/dep dev-main -> satisfiable by some/dep[dev-main].
|
||||||
|
--EXPECT--
|
@ -0,0 +1,54 @@
|
|||||||
|
--TEST--
|
||||||
|
Test that conflict with a branch alias in the lock file leads to an error on install from lock, even if the branch alias was removed on the remote end.
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{ "name": "some/dep", "version": "1.0.0" },
|
||||||
|
{ "name": "some/dep", "version": "1.1.0" },
|
||||||
|
{ "name": "some/dep", "version": "1.2.0" },
|
||||||
|
{ "name": "some/dep", "version": "dev-main" },
|
||||||
|
{ "name": "some/dep", "version": "1.2.x-dev" },
|
||||||
|
{ "name": "conflictor/foo", "version": "1.0.0", "conflict": { "some/dep": ">=1.3" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"some/dep": "dev-main",
|
||||||
|
"conflictor/foo": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--LOCK--
|
||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{ "name": "conflictor/foo", "version": "1.0.0", "conflict": { "some/dep": ">=1.3" }, "type": "library" },
|
||||||
|
{ "name": "some/dep", "version": "dev-main", "extra": {"branch-alias": {"dev-main": "1.3.x-dev"} }, "type": "library" }
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": {
|
||||||
|
"some/dep": 20
|
||||||
|
},
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
|
--RUN--
|
||||||
|
install
|
||||||
|
--EXPECT-EXIT-CODE--
|
||||||
|
2
|
||||||
|
--EXPECT-OUTPUT--
|
||||||
|
Installing dependencies from lock file (including require-dev)
|
||||||
|
Verifying lock file contents can be installed on current platform.
|
||||||
|
Your lock file does not contain a compatible set of packages. Please run composer update.
|
||||||
|
|
||||||
|
Problem 1
|
||||||
|
- conflictor/foo is locked to version 1.0.0 and an update of this package was not requested.
|
||||||
|
- conflictor/foo 1.0.0 conflicts with some/dep 1.3.x-dev.
|
||||||
|
- some/dep is locked to version 1.3.x-dev and an update of this package was not requested.
|
||||||
|
|
||||||
|
--EXPECT--
|
@ -0,0 +1,38 @@
|
|||||||
|
--TEST--
|
||||||
|
Test that conflict of a dependency with a branch alias of another dependency is not ignored, even if the alias is not required for installation.
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{ "name": "some/dep", "version": "1.0.0" },
|
||||||
|
{ "name": "some/dep", "version": "1.1.0" },
|
||||||
|
{ "name": "some/dep", "version": "1.2.0" },
|
||||||
|
{ "name": "some/dep", "version": "dev-main", "extra": {"branch-alias": {"dev-main": "1.3.x-dev"} } },
|
||||||
|
{ "name": "some/dep", "version": "1.2.x-dev" },
|
||||||
|
{ "name": "conflictor/foo", "version": "1.0.0", "conflict": { "some/dep": ">=1.3" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"some/dep": "dev-main",
|
||||||
|
"conflictor/foo": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--RUN--
|
||||||
|
update
|
||||||
|
--EXPECT-EXIT-CODE--
|
||||||
|
2
|
||||||
|
--EXPECT-OUTPUT--
|
||||||
|
Loading composer repositories with package information
|
||||||
|
Updating dependencies
|
||||||
|
Your requirements could not be resolved to an installable set of packages.
|
||||||
|
|
||||||
|
Problem 1
|
||||||
|
- Root composer.json requires some/dep dev-main -> satisfiable by some/dep[dev-main].
|
||||||
|
- conflictor/foo 1.0.0 conflicts with some/dep 1.3.x-dev.
|
||||||
|
- some/dep 1.3.x-dev is an alias of some/dep dev-main and must be installed with it.
|
||||||
|
- Root composer.json requires conflictor/foo 1.0.0 -> satisfiable by conflictor/foo[1.0.0].
|
||||||
|
|
||||||
|
--EXPECT--
|
@ -0,0 +1,43 @@
|
|||||||
|
--TEST--
|
||||||
|
Test that conflict on a branch alias is respected
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{ "name": "some/dep", "version": "1.0.0" },
|
||||||
|
{ "name": "some/dep", "version": "1.1.0" },
|
||||||
|
{ "name": "some/dep", "version": "1.2.0" },
|
||||||
|
{ "name": "some/dep", "version": "dev-main", "extra": {"branch-alias": {"dev-main": "1.3.x-dev"} } },
|
||||||
|
{ "name": "some/dep", "version": "1.2.x-dev" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"some/dep": "^1.0@dev"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"some/dep": ">=1.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--RUN--
|
||||||
|
update
|
||||||
|
--EXPECT-LOCK--
|
||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
{ "name": "some/dep", "version": "1.2.x-dev", "type": "library" }
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": {
|
||||||
|
"some/dep": 20
|
||||||
|
},
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
|
--EXPECT--
|
||||||
|
Installing some/dep (1.2.x-dev)
|
@ -0,0 +1,39 @@
|
|||||||
|
--TEST--
|
||||||
|
Test that a conflict against >=5 includes the default branch if it has no branch alias defined (and then uses the default 9999999-dev alias).
|
||||||
|
--COMPOSER--
|
||||||
|
{
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "package",
|
||||||
|
"package": [
|
||||||
|
{ "name": "conflicter/pkg", "version": "1.0.0", "conflict": { "victim/pkg": ">=5", "victim/pkg2": ">=5" } },
|
||||||
|
{ "name": "victim/pkg", "version": "dev-master", "default-branch": true },
|
||||||
|
{ "name": "victim/pkg2", "version": "dev-foo" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"conflicter/pkg": "1.0.0",
|
||||||
|
"victim/pkg": "*",
|
||||||
|
"victim/pkg2": "*"
|
||||||
|
},
|
||||||
|
"minimum-stability": "dev"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
--RUN--
|
||||||
|
update
|
||||||
|
|
||||||
|
--EXPECT-EXIT-CODE--
|
||||||
|
2
|
||||||
|
--EXPECT-OUTPUT--
|
||||||
|
Loading composer repositories with package information
|
||||||
|
Updating dependencies
|
||||||
|
Your requirements could not be resolved to an installable set of packages.
|
||||||
|
|
||||||
|
Problem 1
|
||||||
|
- conflicter/pkg 1.0.0 conflicts with victim/pkg dev-master.
|
||||||
|
- Root composer.json requires conflicter/pkg 1.0.0 -> satisfiable by conflicter/pkg[1.0.0].
|
||||||
|
- Root composer.json requires victim/pkg * -> satisfiable by victim/pkg[dev-master].
|
||||||
|
|
||||||
|
--EXPECT--
|
Loading…
Reference in New Issue