Skip to content

Commit

Permalink
[fix] update --outdated raises NonExistentKey with dev package
Browse files Browse the repository at this point in the history
closes pypa#5540

pipenv update --outdated fail with NonExistentKey error when there are
outdated packages in dev-packages category.
  • Loading branch information
shimpeko committed Dec 17, 2022
1 parent 581f0bf commit 946040f
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 1 deletion.
1 change: 1 addition & 0 deletions news/5540.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix: `update --outdated` raises NonExistentKey with outdated dev packages
4 changes: 3 additions & 1 deletion pipenv/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -2081,7 +2081,9 @@ def do_outdated(project, pypi_mirror=None, pre=False, clear=False):
)
if name_in_pipfile:
required = ""
version = get_version(project.packages[name_in_pipfile])
version = get_version(
project.get_pipfile_section(category)[name_in_pipfile]
)
rdeps = reverse_deps.get(canonicalize_name(package))
if isinstance(rdeps, Mapping) and "required" in rdeps:
required = " {} required".format(rdeps["required"])
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ filterwarnings = [
# `pipenv run pytest --markers` will list all markers inlcuding these
markers = [
"install: tests having to do with `pipenv install`",
"update: tests having to do with `pipenv update`",
"needs_internet: integration tests that require internet to pass",
"basic: basic pipenv tests grouping",
"dev: tests having to do with dev and dev packages",
Expand Down
12 changes: 12 additions & 0 deletions tests/integration/test_update.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import pytest

@pytest.mark.parametrize("cmd_option", ["", "--dev"])
@pytest.mark.basic
@pytest.mark.update
def test_update_outdated_with_outdated_package(pipenv_instance_private_pypi, cmd_option):
with pipenv_instance_private_pypi() as p:
package_name = "six"
p.pipenv(f"install {cmd_option} {package_name}==1.11")
c = p.pipenv("update --outdated")
assert isinstance(c.exception, SystemExit)
assert c.stdout_bytes.decode("utf-8").startswith(f"Package '{package_name}' out-of-date:")

0 comments on commit 946040f

Please sign in to comment.