chore: add health stack and stabilize provider env tests (#1126)

Co-authored-by: jack-wz01 <15474862+jack-wz01@user.noreply.gitee.com>
This commit is contained in:
jack-wz
2026-04-29 15:45:01 +03:00
committed by GitHub
co-authored by jack-wz01
parent c69dd84184
commit 53f2066945
2 changed files with 49 additions and 6 deletions
+6
View File
@@ -0,0 +1,6 @@
## Health Stack
- typecheck: cargo build --workspace --lib
- lint: cargo clippy --workspace --all-targets -- -D warnings
- test: cargo test --workspace
- shell: shellcheck scripts/install.sh
+43 -6
View File
@@ -632,6 +632,39 @@ pub fn known_providers() -> &'static [&'static str] {
#[cfg(test)]
mod tests {
use super::*;
use std::ffi::OsString;
use std::sync::{LazyLock, Mutex};
static ENV_LOCK: LazyLock<Mutex<()>> = LazyLock::new(|| Mutex::new(()));
struct EnvVarGuard {
key: &'static str,
original: Option<OsString>,
}
impl EnvVarGuard {
fn set(key: &'static str, value: &str) -> Self {
let original = std::env::var_os(key);
std::env::set_var(key, value);
Self { key, original }
}
fn remove(key: &'static str) -> Self {
let original = std::env::var_os(key);
std::env::remove_var(key);
Self { key, original }
}
}
impl Drop for EnvVarGuard {
fn drop(&mut self) {
if let Some(value) = &self.original {
std::env::set_var(self.key, value);
} else {
std::env::remove_var(self.key);
}
}
}
#[test]
fn test_provider_defaults_groq() {
@@ -792,8 +825,9 @@ mod tests {
#[test]
fn test_novita_provider_with_env_key() {
let _env_lock = ENV_LOCK.lock().unwrap();
let unique_key = "test-novita-key-12345";
std::env::set_var("NOVITA_API_KEY", unique_key);
let _env = EnvVarGuard::set("NOVITA_API_KEY", unique_key);
let config = DriverConfig {
provider: "novita".to_string(),
api_key: None,
@@ -806,11 +840,12 @@ mod tests {
driver.is_ok(),
"Novita provider with env var should succeed"
);
std::env::remove_var("NOVITA_API_KEY");
}
#[test]
fn test_novita_provider_no_key_errors() {
let _env_lock = ENV_LOCK.lock().unwrap();
let _env = EnvVarGuard::remove("NOVITA_API_KEY");
let config = DriverConfig {
provider: "novita".to_string(),
api_key: None,
@@ -825,8 +860,9 @@ mod tests {
#[test]
fn test_nvidia_provider_with_env_key() {
// NVIDIA NIM is a known provider — set API key and verify driver creation succeeds.
let _env_lock = ENV_LOCK.lock().unwrap();
let unique_key = "test-nvidia-key-12345";
std::env::set_var("NVIDIA_API_KEY", unique_key);
let _env = EnvVarGuard::set("NVIDIA_API_KEY", unique_key);
let config = DriverConfig {
provider: "nvidia".to_string(),
api_key: None, // picked up from env via provider_defaults
@@ -839,12 +875,13 @@ mod tests {
driver.is_ok(),
"NVIDIA provider with env var should succeed"
);
std::env::remove_var("NVIDIA_API_KEY");
}
#[test]
fn test_nvidia_provider_no_key_errors() {
// NVIDIA NIM provider with no API key should error.
let _env_lock = ENV_LOCK.lock().unwrap();
let _env = EnvVarGuard::remove("NVIDIA_API_KEY");
let config = DriverConfig {
provider: "nvidia".to_string(),
api_key: None,
@@ -859,8 +896,9 @@ mod tests {
#[test]
fn test_custom_provider_key_no_url_helpful_error() {
// Custom provider with key set (via env) but no base_url should give helpful error.
let _env_lock = ENV_LOCK.lock().unwrap();
let unique_key = "test-custom-key-67890";
std::env::set_var("MYCUSTOM_API_KEY", unique_key);
let _env = EnvVarGuard::set("MYCUSTOM_API_KEY", unique_key);
let config = DriverConfig {
provider: "mycustom".to_string(),
api_key: None,
@@ -876,7 +914,6 @@ mod tests {
"Error should mention base_url: {}",
err
);
std::env::remove_var("MYCUSTOM_API_KEY");
}
#[test]