mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
Respect --global-option and --install-option for VCS installs.
This commit is contained in:
parent
54b6a91405
commit
32c11ee2c3
3 changed files with 49 additions and 4 deletions
2
news/5518.bugfix
Normal file
2
news/5518.bugfix
Normal file
|
@ -0,0 +1,2 @@
|
|||
Respect ``--global-option`` and ``--install-option`` when installing from
|
||||
a version control url (e.g. ``git``).
|
|
@ -763,10 +763,6 @@ def should_use_ephemeral_cache(
|
|||
if req.editable or not req.source_dir:
|
||||
return None
|
||||
|
||||
if req.link and not req.link.is_artifact:
|
||||
# VCS checkout. Build wheel just for this run.
|
||||
return True
|
||||
|
||||
if "binary" not in format_control.get_allowed_formats(
|
||||
canonicalize_name(req.name)):
|
||||
logger.info(
|
||||
|
@ -775,6 +771,10 @@ def should_use_ephemeral_cache(
|
|||
)
|
||||
return None
|
||||
|
||||
if req.link and not req.link.is_artifact:
|
||||
# VCS checkout. Build wheel just for this run.
|
||||
return True
|
||||
|
||||
link = req.link
|
||||
base, ext = link.splitext()
|
||||
if cache_available and _contains_egg_info(base):
|
||||
|
|
|
@ -99,6 +99,49 @@ def test_should_use_ephemeral_cache__issue_6197(
|
|||
assert ephem_cache is expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"disallow_binaries, expected",
|
||||
[
|
||||
# By default (i.e. when binaries are allowed), VCS requirements
|
||||
# should be built.
|
||||
(False, True),
|
||||
# Disallowing binaries, however, should cause them not to be built.
|
||||
(True, None),
|
||||
],
|
||||
)
|
||||
def test_should_use_ephemeral_cache__disallow_binaries_and_vcs_checkout(
|
||||
disallow_binaries, expected,
|
||||
):
|
||||
"""
|
||||
Test that disallowing binaries (e.g. from passing --global-option)
|
||||
causes should_use_ephemeral_cache() to return None for VCS checkouts.
|
||||
"""
|
||||
req = Requirement('pendulum')
|
||||
# Passing a VCS url causes link.is_artifact to return False.
|
||||
link = Link(url='git+https://git.example.com/pendulum.git')
|
||||
req = InstallRequirement(
|
||||
req=req,
|
||||
comes_from=None,
|
||||
constraint=False,
|
||||
editable=False,
|
||||
link=link,
|
||||
source_dir='/tmp/pip-install-9py5m2z1/pendulum',
|
||||
)
|
||||
assert not req.is_wheel
|
||||
assert not req.link.is_artifact
|
||||
|
||||
format_control = FormatControl()
|
||||
if disallow_binaries:
|
||||
format_control.disallow_binaries()
|
||||
|
||||
# The cache_available value doesn't matter for this test.
|
||||
ephem_cache = wheel.should_use_ephemeral_cache(
|
||||
req, format_control=format_control, autobuilding=True,
|
||||
cache_available=True,
|
||||
)
|
||||
assert ephem_cache is expected
|
||||
|
||||
|
||||
def test_format_command_result__INFO(caplog):
|
||||
caplog.set_level(logging.INFO)
|
||||
actual = wheel.format_command_result(
|
||||
|
|
Loading…
Reference in a new issue