From 3b40627debb65e74081ddb6a5516ff924b9d37c7 Mon Sep 17 00:00:00 2001 From: Wei Qi Lu Date: Mon, 11 May 2026 13:55:09 -0700 Subject: [PATCH 1/4] rust(fix): allow partial sift-cli config updates --- rust/crates/sift_cli/src/cmd/config.rs | 41 ++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/rust/crates/sift_cli/src/cmd/config.rs b/rust/crates/sift_cli/src/cmd/config.rs index 126b119a8..8b5c834f1 100644 --- a/rust/crates/sift_cli/src/cmd/config.rs +++ b/rust/crates/sift_cli/src/cmd/config.rs @@ -205,6 +205,43 @@ fn is_update_empty(args: &ConfigUpdateArgs) -> bool { .. } = args; grpc_uri.as_ref().is_none_or(|s| s.is_empty()) - || rest_uri.as_ref().is_none_or(|s| s.is_empty()) - || api_key.as_ref().is_none_or(|s| s.is_empty()) + && rest_uri.as_ref().is_none_or(|s| s.is_empty()) + && api_key.as_ref().is_none_or(|s| s.is_empty()) +} + +#[cfg(test)] +mod test_is_update_empty { + use super::is_update_empty; + use crate::cli::ConfigUpdateArgs; + + fn args(grpc_uri: Option<&str>, rest_uri: Option<&str>, api_key: Option<&str>) -> ConfigUpdateArgs { + ConfigUpdateArgs { + interactive: false, + grpc_uri: grpc_uri.map(String::from), + rest_uri: rest_uri.map(String::from), + api_key: api_key.map(String::from), + } + } + + #[test] + fn no_flags_is_empty() { + assert!(is_update_empty(&args(None, None, None))); + } + + #[test] + fn all_empty_strings_is_empty() { + assert!(is_update_empty(&args(Some(""), Some(""), Some("")))); + } + + #[test] + fn any_single_flag_is_not_empty() { + assert!(!is_update_empty(&args(Some("g"), None, None))); + assert!(!is_update_empty(&args(None, Some("r"), None))); + assert!(!is_update_empty(&args(None, None, Some("k")))); + } + + #[test] + fn all_flags_set_is_not_empty() { + assert!(!is_update_empty(&args(Some("g"), Some("r"), Some("k")))); + } } From 1e3b069158b1ed3b582a67820b2b9783bf29e859 Mon Sep 17 00:00:00 2001 From: Wei Qi Lu Date: Mon, 11 May 2026 14:16:21 -0700 Subject: [PATCH 2/4] format --- rust/crates/sift_cli/src/cmd/config.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rust/crates/sift_cli/src/cmd/config.rs b/rust/crates/sift_cli/src/cmd/config.rs index 8b5c834f1..fad483325 100644 --- a/rust/crates/sift_cli/src/cmd/config.rs +++ b/rust/crates/sift_cli/src/cmd/config.rs @@ -214,7 +214,11 @@ mod test_is_update_empty { use super::is_update_empty; use crate::cli::ConfigUpdateArgs; - fn args(grpc_uri: Option<&str>, rest_uri: Option<&str>, api_key: Option<&str>) -> ConfigUpdateArgs { + fn args( + grpc_uri: Option<&str>, + rest_uri: Option<&str>, + api_key: Option<&str>, + ) -> ConfigUpdateArgs { ConfigUpdateArgs { interactive: false, grpc_uri: grpc_uri.map(String::from), From 75ae4141e1d58ee2f8566d381a0f3a25eb3a69ff Mon Sep 17 00:00:00 2001 From: Wei Qi Lu Date: Mon, 11 May 2026 16:36:28 -0700 Subject: [PATCH 3/4] split sift-cli config tests into submodule --- .../src/cmd/{config.rs => config/mod.rs} | 46 ++----------------- rust/crates/sift_cli/src/cmd/config/tests.rs | 39 ++++++++++++++++ 2 files changed, 43 insertions(+), 42 deletions(-) rename rust/crates/sift_cli/src/cmd/{config.rs => config/mod.rs} (85%) create mode 100644 rust/crates/sift_cli/src/cmd/config/tests.rs diff --git a/rust/crates/sift_cli/src/cmd/config.rs b/rust/crates/sift_cli/src/cmd/config/mod.rs similarity index 85% rename from rust/crates/sift_cli/src/cmd/config.rs rename to rust/crates/sift_cli/src/cmd/config/mod.rs index fad483325..56c7a2c64 100644 --- a/rust/crates/sift_cli/src/cmd/config.rs +++ b/rust/crates/sift_cli/src/cmd/config/mod.rs @@ -1,3 +1,6 @@ +#[cfg(test)] +mod tests; + use crate::BIN_NAME; use anyhow::{Context, Result, anyhow}; use crossterm::style::Stylize; @@ -207,45 +210,4 @@ fn is_update_empty(args: &ConfigUpdateArgs) -> bool { grpc_uri.as_ref().is_none_or(|s| s.is_empty()) && rest_uri.as_ref().is_none_or(|s| s.is_empty()) && api_key.as_ref().is_none_or(|s| s.is_empty()) -} - -#[cfg(test)] -mod test_is_update_empty { - use super::is_update_empty; - use crate::cli::ConfigUpdateArgs; - - fn args( - grpc_uri: Option<&str>, - rest_uri: Option<&str>, - api_key: Option<&str>, - ) -> ConfigUpdateArgs { - ConfigUpdateArgs { - interactive: false, - grpc_uri: grpc_uri.map(String::from), - rest_uri: rest_uri.map(String::from), - api_key: api_key.map(String::from), - } - } - - #[test] - fn no_flags_is_empty() { - assert!(is_update_empty(&args(None, None, None))); - } - - #[test] - fn all_empty_strings_is_empty() { - assert!(is_update_empty(&args(Some(""), Some(""), Some("")))); - } - - #[test] - fn any_single_flag_is_not_empty() { - assert!(!is_update_empty(&args(Some("g"), None, None))); - assert!(!is_update_empty(&args(None, Some("r"), None))); - assert!(!is_update_empty(&args(None, None, Some("k")))); - } - - #[test] - fn all_flags_set_is_not_empty() { - assert!(!is_update_empty(&args(Some("g"), Some("r"), Some("k")))); - } -} +} \ No newline at end of file diff --git a/rust/crates/sift_cli/src/cmd/config/tests.rs b/rust/crates/sift_cli/src/cmd/config/tests.rs new file mode 100644 index 000000000..eb86bc29b --- /dev/null +++ b/rust/crates/sift_cli/src/cmd/config/tests.rs @@ -0,0 +1,39 @@ +mod test_is_update_empty { + use super::super::is_update_empty; + use crate::cli::ConfigUpdateArgs; + + fn args( + grpc_uri: Option<&str>, + rest_uri: Option<&str>, + api_key: Option<&str>, + ) -> ConfigUpdateArgs { + ConfigUpdateArgs { + interactive: false, + grpc_uri: grpc_uri.map(String::from), + rest_uri: rest_uri.map(String::from), + api_key: api_key.map(String::from), + } + } + + #[test] + fn no_flags_is_empty() { + assert!(is_update_empty(&args(None, None, None))); + } + + #[test] + fn all_empty_strings_is_empty() { + assert!(is_update_empty(&args(Some(""), Some(""), Some("")))); + } + + #[test] + fn any_single_flag_is_not_empty() { + assert!(!is_update_empty(&args(Some("g"), None, None))); + assert!(!is_update_empty(&args(None, Some("r"), None))); + assert!(!is_update_empty(&args(None, None, Some("k")))); + } + + #[test] + fn all_flags_set_is_not_empty() { + assert!(!is_update_empty(&args(Some("g"), Some("r"), Some("k")))); + } +} From 1fd041bd6fdffb5dff938427a4f9d0d870c882a4 Mon Sep 17 00:00:00 2001 From: Wei Qi Lu Date: Mon, 11 May 2026 17:14:30 -0700 Subject: [PATCH 4/4] format --- rust/crates/sift_cli/src/cmd/config/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/crates/sift_cli/src/cmd/config/mod.rs b/rust/crates/sift_cli/src/cmd/config/mod.rs index 56c7a2c64..a7e97c499 100644 --- a/rust/crates/sift_cli/src/cmd/config/mod.rs +++ b/rust/crates/sift_cli/src/cmd/config/mod.rs @@ -210,4 +210,4 @@ fn is_update_empty(args: &ConfigUpdateArgs) -> bool { grpc_uri.as_ref().is_none_or(|s| s.is_empty()) && rest_uri.as_ref().is_none_or(|s| s.is_empty()) && api_key.as_ref().is_none_or(|s| s.is_empty()) -} \ No newline at end of file +}