From 89cb6c55c81c7d8cc0c07816f215f5d00fe2d414 Mon Sep 17 00:00:00 2001 From: Matt Van Horn <455140+mvanhorn@users.noreply.github.com> Date: Sun, 7 Jun 2026 02:51:27 -0700 Subject: [PATCH] fix: address self-review findings --- crates/config/src/lib.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 1c1eee0a..af255c17 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -1952,9 +1952,13 @@ fn should_skip_secret_store_for_provider( fn env_api_key_for_provider(provider: ProviderKind) -> Option { if provider == ProviderKind::Huggingface { return std::env::var("HUGGINGFACE_API_KEY") - .or_else(|_| std::env::var("HF_TOKEN")) .ok() - .filter(|value| !value.trim().is_empty()); + .filter(|value| !value.trim().is_empty()) + .or_else(|| { + std::env::var("HF_TOKEN") + .ok() + .filter(|value| !value.trim().is_empty()) + }); } codewhale_secrets::env_for(provider.as_str()) @@ -4825,6 +4829,24 @@ model = "mimo-v2.5-pro" assert_eq!(resolved.model, "org/short-model"); } + #[test] + fn huggingface_token_fallback_resolves_when_primary_api_key_is_blank() { + let _lock = env_lock(); + let _env = EnvGuard::without_deepseek_runtime_overrides(); + // Safety: test-only environment mutation guarded by a module mutex. + unsafe { + env::set_var("CODEWHALE_PROVIDER", "huggingface"); + env::set_var("HUGGINGFACE_API_KEY", " "); + env::set_var("HF_TOKEN", "hf-token-fallback"); + } + + let resolved = + ConfigToml::default().resolve_runtime_options(&CliRuntimeOverrides::default()); + + assert_eq!(resolved.provider, ProviderKind::Huggingface); + assert_eq!(resolved.api_key.as_deref(), Some("hf-token-fallback")); + } + #[test] fn siliconflow_cn_base_url_env_normalizes_model_aliases() { let _lock = env_lock();