From 36d632d8597b397b3d800b8d6ad78cc9a6fb4678 Mon Sep 17 00:00:00 2001 From: "Xuan (Sean) Hu" Date: Fri, 31 Jan 2025 23:31:51 +0800 Subject: [PATCH] fix: no message when no packages upgraded with upgrade-all (#1597) * fix: no message when no packages upgraded with upgrade-all * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update changelog.d/1565.bugfix.md Co-authored-by: Chak-Kuen Lam --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Chak-Kuen Lam --- changelog.d/1565.bugfix.md | 1 + src/pipx/commands/upgrade.py | 6 +++--- tests/test_upgrade_all.py | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 changelog.d/1565.bugfix.md diff --git a/changelog.d/1565.bugfix.md b/changelog.d/1565.bugfix.md new file mode 100644 index 0000000000..ee24a5a1f1 --- /dev/null +++ b/changelog.d/1565.bugfix.md @@ -0,0 +1 @@ +Fix no message displayed when no packages are upgraded with `upgrade-all`. diff --git a/src/pipx/commands/upgrade.py b/src/pipx/commands/upgrade.py index c5ea6f4d24..89a4af0be3 100644 --- a/src/pipx/commands/upgrade.py +++ b/src/pipx/commands/upgrade.py @@ -247,7 +247,7 @@ def upgrade_all( if venv_dir.name in skip or "--editable" in venv.pipx_metadata.main_package.pip_args: continue try: - _upgrade_venv( + versions_updated = _upgrade_venv( venv_dir, venv.pipx_metadata.main_package.pip_args, verbose=verbose, @@ -256,11 +256,11 @@ def upgrade_all( force=force, python_flag_passed=python_flag_passed, ) + if versions_updated > 0: + upgraded.append(venv_dir.name) except PipxError as e: print(e, file=sys.stderr) failed.append(venv_dir.name) - else: - upgraded.append(venv_dir.name) if len(upgraded) == 0: print(f"No packages upgraded after running 'pipx upgrade-all' {sleep}") if len(failed) > 0: diff --git a/tests/test_upgrade_all.py b/tests/test_upgrade_all.py index 4c65021825..aebafe5e37 100644 --- a/tests/test_upgrade_all.py +++ b/tests/test_upgrade_all.py @@ -10,6 +10,7 @@ def test_upgrade_all(pipx_temp_env, capsys): def test_upgrade_all_none(pipx_temp_env, capsys): + assert not run_pipx_cli(["install", "pycowsay"]) assert not run_pipx_cli(["upgrade-all"]) captured = capsys.readouterr() assert "No packages upgraded after running 'pipx upgrade-all'" in captured.out