Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
python-poetry
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
python-poetry
Commits
8e49e901
Unverified
Commit
8e49e901
authored
Aug 10, 2018
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix a recursion error with circular dependencies
parent
26ecdddb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
0 deletions
+38
-0
CHANGELOG.md
+7
-0
poetry/puzzle/solver.py
+3
-0
tests/puzzle/test_solver.py
+28
-0
No files found.
CHANGELOG.md
View file @
8e49e901
# Change Log
## [Unreleased]
### Fixed
-
Fixed a recursion error with circular dependencies.
## [0.11.4] - 2018-07-30
### Fixed
...
...
poetry/puzzle/solver.py
View file @
8e49e901
...
...
@@ -213,6 +213,9 @@ class Solver:
if
not
is_activated
:
continue
if
previous
and
previous
[
"name"
]
==
dependency
.
name
:
break
for
pkg
in
packages
:
if
pkg
.
name
==
dependency
.
name
:
# If there is already a child with this name
...
...
tests/puzzle/test_solver.py
View file @
8e49e901
...
...
@@ -893,3 +893,31 @@ def test_solver_fails_if_dependency_name_does_not_match_package(solver, repo, pa
with
pytest
.
raises
(
RuntimeError
):
solver
.
solve
()
def
test_solver_does_not_get_stuck_in_recursion_on_circular_dependency
(
solver
,
repo
,
package
):
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
.
add_dependency
(
"B"
,
"^1.0"
)
package_b
=
get_package
(
"B"
,
"1.0"
)
package_b
.
add_dependency
(
"C"
,
"^1.0"
)
package_c
=
get_package
(
"C"
,
"1.0"
)
package_c
.
add_dependency
(
"B"
,
"^1.0"
)
repo
.
add_package
(
package_a
)
repo
.
add_package
(
package_b
)
repo
.
add_package
(
package_c
)
package
.
add_dependency
(
"A"
,
"^1.0"
)
ops
=
solver
.
solve
()
check_solver_result
(
ops
,
[
{
"job"
:
"install"
,
"package"
:
package_c
},
{
"job"
:
"install"
,
"package"
:
package_b
},
{
"job"
:
"install"
,
"package"
:
package_a
},
],
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment