Commit feef53be by Sébastien Eustace Committed by Arun Babu Neelicattu

Fix dependency overrides for packages with multiple duplicate dependencies

parent 12610bac
...@@ -646,7 +646,7 @@ class Provider: ...@@ -646,7 +646,7 @@ class Provider:
overrides = [] overrides = []
for _dep in _deps: for _dep in _deps:
current_overrides = self._overrides.copy() current_overrides = self._overrides.copy()
package_overrides = current_overrides.get(package, {}) package_overrides = current_overrides.get(package, {}).copy()
package_overrides.update({_dep.name: _dep}) package_overrides.update({_dep.name: _dep})
current_overrides.update({package: package_overrides}) current_overrides.update({package: package_overrides})
overrides.append(current_overrides) overrides.append(current_overrides)
......
...@@ -2003,3 +2003,43 @@ def test_solver_should_not_update_same_version_packages_if_installed_has_no_sour ...@@ -2003,3 +2003,43 @@ def test_solver_should_not_update_same_version_packages_if_installed_has_no_sour
check_solver_result( check_solver_result(
ops, [{"job": "install", "package": foo, "skipped": True}], ops, [{"job": "install", "package": foo, "skipped": True}],
) )
def test_solver_should_resolve_all_versions_for_multiple_duplicate_dependencies(
solver, repo, package
):
package.python_versions = "~2.7 || ^3.5"
package.add_dependency(
"A", {"version": "^1.0", "markers": "python_version < '3.5'"}
)
package.add_dependency(
"A", {"version": "^2.0", "markers": "python_version >= '3.5'"}
)
package.add_dependency(
"B", {"version": "^3.0", "markers": "python_version < '3.5'"}
)
package.add_dependency(
"B", {"version": "^4.0", "markers": "python_version >= '3.5'"}
)
package_a10 = get_package("A", "1.0.0")
package_a20 = get_package("A", "2.0.0")
package_b30 = get_package("B", "3.0.0")
package_b40 = get_package("B", "4.0.0")
repo.add_package(package_a10)
repo.add_package(package_a20)
repo.add_package(package_b30)
repo.add_package(package_b40)
ops = solver.solve()
check_solver_result(
ops,
[
{"job": "install", "package": package_a10},
{"job": "install", "package": package_a20},
{"job": "install", "package": package_b30},
{"job": "install", "package": package_b40},
],
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment