Respect --global-option and --install-option for VCS installs.

This commit is contained in:
Chris Jerdonek 2019-04-08 02:00:18 -07:00
parent 54b6a91405
commit 32c11ee2c3
3 changed files with 49 additions and 4 deletions

2
news/5518.bugfix Normal file
View File

@ -0,0 +1,2 @@
Respect ``--global-option`` and ``--install-option`` when installing from
a version control url (e.g. ``git``).

View File

@ -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):

View File

@ -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(