|
16 | 16 | from pex.common import safe_copy, safe_mkdtemp, temporary_dir |
17 | 17 | from pex.dist_metadata import Distribution, Requirement |
18 | 18 | from pex.interpreter import PythonInterpreter |
| 19 | +from pex.pep_427 import InstallableType |
19 | 20 | from pex.pip.version import PipVersion |
20 | 21 | from pex.resolve import abbreviated_platforms |
21 | 22 | from pex.resolve.configured_resolver import ConfiguredResolver |
|
41 | 42 | make_source_dir, |
42 | 43 | subprocess, |
43 | 44 | ) |
| 45 | +from testing.pytest_utils.tmp import Tempdir |
44 | 46 |
|
45 | 47 | if TYPE_CHECKING: |
46 | 48 | from typing import Any, DefaultDict, Iterable, Iterator, List, Union |
@@ -259,23 +261,32 @@ def _parse_requirement(req): |
259 | 261 | return Requirement.parse(req) |
260 | 262 |
|
261 | 263 |
|
262 | | -def test_resolve_extra_setup_py(): |
263 | | - # type: () -> None |
| 264 | +def test_resolve_extra_setup_py(tmpdir): |
| 265 | + # type: (Tempdir) -> None |
264 | 266 | with make_source_dir( |
265 | 267 | name="project1", version="1.0.0", extras_require={"foo": ["project2"]} |
266 | 268 | ) as project1_dir: |
267 | 269 | project2_wheel = build_wheel(name="project2", version="2.0.0") |
268 | | - with temporary_dir() as td: |
269 | | - safe_copy(project2_wheel, os.path.join(td, os.path.basename(project2_wheel))) |
270 | | - |
271 | | - resolved_dists = local_resolve( |
272 | | - requirements=["{}[foo]".format(project1_dir)], |
273 | | - repos_configuration=ReposConfiguration.create(find_links=[Repo(td)]), |
| 270 | + safe_copy(project2_wheel, tmpdir.join(os.path.basename(project2_wheel))) |
| 271 | + result = resolve( |
| 272 | + requirements=["setuptools"], |
| 273 | + build_configuration=BuildConfiguration.create(allow_builds=False), |
| 274 | + result_type=InstallableType.WHEEL_FILE, |
| 275 | + ) |
| 276 | + for resolved_dist in result.distributions: |
| 277 | + safe_copy( |
| 278 | + resolved_dist.distribution.location, |
| 279 | + tmpdir.join(os.path.basename(resolved_dist.distribution.location)), |
274 | 280 | ) |
275 | | - assert {_parse_requirement(req) for req in ("project1==1.0.0", "project2==2.0.0")} == { |
276 | | - _parse_requirement(resolved_dist.distribution.as_requirement()) |
277 | | - for resolved_dist in resolved_dists |
278 | | - } |
| 281 | + |
| 282 | + resolved_dists = local_resolve( |
| 283 | + requirements=["{}[foo]".format(project1_dir)], |
| 284 | + repos_configuration=ReposConfiguration.create(find_links=[Repo(tmpdir.path)]), |
| 285 | + ) |
| 286 | + assert {_parse_requirement(req) for req in ("project1==1.0.0", "project2==2.0.0")} == { |
| 287 | + _parse_requirement(resolved_dist.distribution.as_requirement()) |
| 288 | + for resolved_dist in resolved_dists |
| 289 | + } |
279 | 290 |
|
280 | 291 |
|
281 | 292 | def test_resolve_extra_wheel(): |
|
0 commit comments