11import math
22from typing import TYPE_CHECKING , Dict , Iterable , Optional , Sequence
3- from unittest .mock import Mock
43
54import pytest
65from pip ._vendor .resolvelib .resolvers import RequirementInformation
2120 PreferenceInformation = RequirementInformation [Requirement , Candidate ]
2221
2322
24- # Utility to build requirement information
2523def build_req_info (
2624 name : str , parent : Optional [InstallationCandidate ] = None
2725) -> "PreferenceInformation" :
@@ -35,36 +33,6 @@ def build_req_info(
3533 return requirement_information
3634
3735
38- # Utility to construct a mock factory for PipProvider
39- def create_mock_factory () -> Factory :
40- return Factory (
41- finder = Mock (),
42- preparer = Mock (),
43- make_install_req = Mock (),
44- wheel_cache = Mock (),
45- use_user_site = False ,
46- force_reinstall = False ,
47- ignore_installed = False ,
48- ignore_requires_python = False ,
49- )
50-
51-
52- # A helper for constructing the test setup in a single call
53- def setup_provider (
54- user_requested : Dict [str , int ], initial_depths : Optional [Dict [str , float ]] = None
55- ) -> PipProvider :
56- provider = PipProvider (
57- factory = create_mock_factory (),
58- constraints = {},
59- ignore_dependencies = False ,
60- upgrade_strategy = "to-satisfy-only" ,
61- user_requested = user_requested ,
62- )
63- if initial_depths :
64- provider ._known_depths .update (initial_depths )
65- return provider
66-
67-
6836def test_provider_known_depths (factory : Factory ) -> None :
6937 # Root requirement is specified by the user
7038 # therefore has an inferred depth of 1
@@ -154,7 +122,7 @@ def test_provider_known_depths(factory: Factory) -> None:
154122 "child-package" : [
155123 build_req_info (
156124 "child-package" ,
157- InstallationCandidate (
125+ parent = InstallationCandidate (
158126 "parent-package" , "1.0" , Link ("https://parent-package.com" )
159127 ),
160128 )
@@ -202,9 +170,21 @@ def test_get_preference(
202170 user_requested : Dict [str , int ],
203171 known_depths : Dict [str , float ],
204172 expected : "Preference" ,
173+ factory : Factory ,
205174) -> None :
206- provider = setup_provider (user_requested , known_depths )
175+ provider = PipProvider (
176+ factory = factory ,
177+ constraints = {},
178+ ignore_dependencies = False ,
179+ upgrade_strategy = "to-satisfy-only" ,
180+ user_requested = user_requested ,
181+ )
182+
183+ if known_depths :
184+ provider ._known_depths .update (known_depths )
185+
207186 preference = provider .get_preference (
208187 identifier , {}, {}, information , backtrack_causes
209188 )
189+
210190 assert preference == expected , f"Expected { expected } , got { preference } "
0 commit comments