From 7708cd8445e0bc18beb4cc09d21ec4a773b4b8d3 Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Sat, 3 Aug 2019 10:43:24 +0800 Subject: [PATCH] Pass lock options to outdated --- news/3879.bugfix.rst | 1 + pipenv/cli/command.py | 2 +- pipenv/core.py | 5 ++--- tests/integration/test_cli.py | 13 +++++++++++++ tests/integration/test_install_basic.py | 11 ++++++++++- 5 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 news/3879.bugfix.rst diff --git a/news/3879.bugfix.rst b/news/3879.bugfix.rst new file mode 100644 index 00000000..95413ca5 --- /dev/null +++ b/news/3879.bugfix.rst @@ -0,0 +1 @@ +Pass ``--pre`` and ``--clear`` options to ``pipenv update --outdated``. diff --git a/pipenv/cli/command.py b/pipenv/cli/command.py index c2cd2e49..3fa6b611 100644 --- a/pipenv/cli/command.py +++ b/pipenv/cli/command.py @@ -484,7 +484,7 @@ def update( if not outdated: outdated = bool(dry_run) if outdated: - do_outdated(pypi_mirror=state.pypi_mirror) + do_outdated(clear=state.clear, pre=state.installstate.pre, pypi_mirror=state.pypi_mirror) packages = [p for p in state.installstate.packages if p] editable = [p for p in state.installstate.editables if p] if not packages: diff --git a/pipenv/core.py b/pipenv/core.py index 0637c225..67a45197 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -1767,12 +1767,11 @@ def do_py(system=False): click.echo(crayons.red("No project found!")) -def do_outdated(pypi_mirror=None): +def do_outdated(pypi_mirror=None, pre=False, clear=False): # TODO: Allow --skip-lock here? from .vendor.requirementslib.models.requirements import Requirement from .vendor.requirementslib.models.utils import get_version from .vendor.packaging.utils import canonicalize_name - from .vendor.vistir.compat import Mapping from collections import namedtuple packages = {} @@ -1789,7 +1788,7 @@ def do_outdated(pypi_mirror=None): dep = Requirement.from_line(str(result.as_requirement())) packages.update(dep.as_pipfile()) updated_packages = {} - lockfile = do_lock(write=False, pypi_mirror=pypi_mirror) + lockfile = do_lock(clear=clear, pre=pre, write=False, pypi_mirror=pypi_mirror) for section in ("develop", "default"): for package in lockfile[section]: try: diff --git a/tests/integration/test_cli.py b/tests/integration/test_cli.py index 1ee9f64a..4d930fc3 100644 --- a/tests/integration/test_cli.py +++ b/tests/integration/test_cli.py @@ -265,3 +265,16 @@ def test_pipenv_three(PipenvInstance): c = p.pipenv('--three') assert c.return_code == 0 assert 'Successfully created virtual environment' in c.err + + +@pytest.mark.outdated +def test_pipenv_outdated_prerelease(PipenvInstance): + with PipenvInstance(chdir=True) as p: + with open(p.pipfile_path, "w") as f: + contents = """ +[packages] +sqlalchemy = "==1.2.0b3" + """.strip() + f.write(contents) + c = p.pipenv('update --pre --outdated') + assert c.return_code == 0 diff --git a/tests/integration/test_install_basic.py b/tests/integration/test_install_basic.py index 80ccdf0e..f42b8f3f 100644 --- a/tests/integration/test_install_basic.py +++ b/tests/integration/test_install_basic.py @@ -7,7 +7,6 @@ import pytest from flaky import flaky from pipenv._compat import Path, TemporaryDirectory -from pipenv.project import Project from pipenv.utils import temp_environ from pipenv.vendor import delegator @@ -475,3 +474,13 @@ extras = ["socks"] assert 'six = {version = "*"}' in contents assert 'requests = {version = "*"' in contents assert 'plette = "*"' in contents + + +@pytest.mark.install +def test_install_prerelease(PipenvInstance): + with PipenvInstance(chdir=True) as p: + c = p.pipenv("install sqlalchemy==1.2.0b3") + assert c.return_code != 0 + c = p.pipenv("install --pre sqlalchemy==1.2.0b3") + assert c.return_code == 0 + assert p.lockfile["default"]["sqlalchemy"]["version"] == "1.2.0b3"