Commit 426dbdcf by Sébastien Eustace

Fix circular dependencies resolution

parent 1aa1ab29
# Change Log
## [Unreleased]
### Fixed
- Fixed dependency resolution with circular dependencies.
## [0.12.16] - 2019-05-17
### Fixed
......
......@@ -248,7 +248,10 @@ class Solver:
break
if previous and previous["name"] == dependency.name:
break
# We have a circular dependency.
# Since the dependencies are resolved we can
# simply skip it because we already have it
continue
for pkg in packages:
if pkg.name == dependency.name and dependency.constraint.allows(
......
......@@ -726,20 +726,27 @@ def test_solver_circular_dependency(solver, repo, package):
package_b = get_package("B", "1.0")
package_b.add_dependency("A", "^1.0")
package_b.add_dependency("C", "^1.0")
package_c = get_package("C", "1.0")
repo.add_package(package_a)
repo.add_package(package_b)
repo.add_package(package_c)
ops = solver.solve()
check_solver_result(
ops,
[
{"job": "install", "package": package_c},
{"job": "install", "package": package_b},
{"job": "install", "package": package_a},
],
)
assert "main" == ops[0].package.category
def test_solver_duplicate_dependencies_same_constraint(solver, repo, package):
package.add_dependency("A")
......
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