Skip to content

Commit be9226d

Browse files
committed
Add tests for get_topological_weights
1 parent 832e6df commit be9226d

File tree

1 file changed

+148
-1
lines changed

1 file changed

+148
-1
lines changed

tests/unit/resolution_resolvelib/test_resolver.py

+148-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66

77
from pip._internal.req.constructors import install_req_from_line
88
from pip._internal.req.req_set import RequirementSet
9-
from pip._internal.resolution.resolvelib.resolver import Resolver
9+
from pip._internal.resolution.resolvelib.resolver import (
10+
Resolver,
11+
get_topological_weights,
12+
)
1013

1114

1215
@pytest.fixture()
@@ -87,3 +90,147 @@ def test_new_resolver_get_installation_order(resolver, edges, ordered_reqs):
8790
ireqs = resolver.get_installation_order(reqset)
8891
req_strs = [str(r.req) for r in ireqs]
8992
assert req_strs == ordered_reqs
93+
94+
95+
@pytest.mark.parametrize(
96+
"name, edges, expected_weights",
97+
[
98+
(
99+
# From https://github.com/pypa/pip/pull/8127#discussion_r414564664
100+
"deep second edge",
101+
[
102+
(None, "one"),
103+
(None, "two"),
104+
("one", "five"),
105+
("two", "three"),
106+
("three", "four"),
107+
("four", "five"),
108+
],
109+
{None: 0, "one": 1, "two": 1, "three": 2, "four": 3, "five": 4},
110+
),
111+
(
112+
"linear",
113+
[
114+
(None, "one"),
115+
("one", "two"),
116+
("two", "three"),
117+
("three", "four"),
118+
("four", "five"),
119+
],
120+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
121+
),
122+
(
123+
"linear AND root -> two",
124+
[
125+
(None, "one"),
126+
("one", "two"),
127+
("two", "three"),
128+
("three", "four"),
129+
("four", "five"),
130+
(None, "two"),
131+
],
132+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
133+
),
134+
(
135+
"linear AND root -> three",
136+
[
137+
(None, "one"),
138+
("one", "two"),
139+
("two", "three"),
140+
("three", "four"),
141+
("four", "five"),
142+
(None, "three"),
143+
],
144+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
145+
),
146+
(
147+
"linear AND root -> four",
148+
[
149+
(None, "one"),
150+
("one", "two"),
151+
("two", "three"),
152+
("three", "four"),
153+
("four", "five"),
154+
(None, "four"),
155+
],
156+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
157+
),
158+
(
159+
"linear AND root -> five",
160+
[
161+
(None, "one"),
162+
("one", "two"),
163+
("two", "three"),
164+
("three", "four"),
165+
("four", "five"),
166+
(None, "five"),
167+
],
168+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
169+
),
170+
(
171+
"linear AND one -> four",
172+
[
173+
(None, "one"),
174+
("one", "two"),
175+
("two", "three"),
176+
("three", "four"),
177+
("four", "five"),
178+
("one", "four"),
179+
],
180+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
181+
),
182+
(
183+
"linear AND two -> four",
184+
[
185+
(None, "one"),
186+
("one", "two"),
187+
("two", "three"),
188+
("three", "four"),
189+
("four", "five"),
190+
("two", "four"),
191+
],
192+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
193+
),
194+
(
195+
"linear AND four -> one (cycle)",
196+
[
197+
(None, "one"),
198+
("one", "two"),
199+
("two", "three"),
200+
("three", "four"),
201+
("four", "five"),
202+
("four", "one"),
203+
],
204+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
205+
),
206+
(
207+
"linear AND four -> two (cycle)",
208+
[
209+
(None, "one"),
210+
("one", "two"),
211+
("two", "three"),
212+
("three", "four"),
213+
("four", "five"),
214+
("four", "two"),
215+
],
216+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
217+
),
218+
(
219+
"linear AND four -> three (cycle)",
220+
[
221+
(None, "one"),
222+
("one", "two"),
223+
("two", "three"),
224+
("three", "four"),
225+
("four", "five"),
226+
("four", "three"),
227+
],
228+
{None: 0, "one": 1, "two": 2, "three": 3, "four": 4, "five": 5},
229+
),
230+
],
231+
)
232+
def test_new_resolver_topological_weights(name, edges, expected_weights):
233+
graph = _make_graph(edges)
234+
235+
weights = get_topological_weights(graph)
236+
assert weights == expected_weights

0 commit comments

Comments
 (0)