From 22cca773296e83a7cd30f4d17e4ec34c153acbec Mon Sep 17 00:00:00 2001 From: Billy Doyle <50842911+billy-doyle@users.noreply.github.com> Date: Thu, 11 Jul 2024 20:43:31 -0400 Subject: [PATCH] Exit with zero when `uv tool install` request is already satisfied (#4986) ## Summary `uv tool install X` fails for tools already installed and exits with code 1. Allow already installed tools to exit with code 0. --- crates/uv/src/commands/tool/install.rs | 2 +- crates/uv/tests/tool_install.rs | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/uv/src/commands/tool/install.rs b/crates/uv/src/commands/tool/install.rs index aaa156535..8dd5a17c9 100644 --- a/crates/uv/src/commands/tool/install.rs +++ b/crates/uv/src/commands/tool/install.rs @@ -190,7 +190,7 @@ pub(crate) async fn install( if !force && settings.reinstall.is_none() && settings.upgrade.is_none() { // We're done. writeln!(printer.stderr(), "`{from}` is already installed")?; - return Ok(ExitStatus::Failure); + return Ok(ExitStatus::Success); } } } diff --git a/crates/uv/tests/tool_install.rs b/crates/uv/tests/tool_install.rs index 798f500b3..c3f1f7f9b 100644 --- a/crates/uv/tests/tool_install.rs +++ b/crates/uv/tests/tool_install.rs @@ -403,8 +403,8 @@ fn tool_install_already_installed() { .env("UV_TOOL_DIR", tool_dir.as_os_str()) .env("XDG_BIN_HOME", bin_dir.as_os_str()) .env("PATH", bin_dir.as_os_str()), @r###" - success: false - exit_code: 1 + success: true + exit_code: 0 ----- stdout ----- ----- stderr ----- @@ -676,8 +676,8 @@ fn tool_install_entry_point_exists() { .env("UV_TOOL_DIR", tool_dir.as_os_str()) .env("XDG_BIN_HOME", bin_dir.as_os_str()) .env("PATH", bin_dir.as_os_str()), @r###" - success: false - exit_code: 1 + success: true + exit_code: 0 ----- stdout ----- ----- stderr ----- @@ -1407,8 +1407,8 @@ fn tool_install_python_request() { .env("UV_TOOL_DIR", tool_dir.as_os_str()) .env("XDG_BIN_HOME", bin_dir.as_os_str()) .env("PATH", bin_dir.as_os_str()), @r###" - success: false - exit_code: 1 + success: true + exit_code: 0 ----- stdout ----- ----- stderr ----- @@ -1501,8 +1501,8 @@ fn tool_install_preserve_environment() { .env("UV_TOOL_DIR", tool_dir.as_os_str()) .env("XDG_BIN_HOME", bin_dir.as_os_str()) .env("PATH", bin_dir.as_os_str()), @r###" - success: false - exit_code: 1 + success: true + exit_code: 0 ----- stdout ----- ----- stderr -----