mirror of
https://github.com/RightNow-AI/openfang.git
synced 2026-08-14 00:47:51 +00:00
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:
@@ -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
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user