Skip to content

Commit a1eb959

Browse files
committed
fix(test): 修复 credential_chain 测试环境变量竞态条件
两个操作 ANTHROPIC_API_KEY 环境变量的测试并行执行时互相干扰, 导致 CI 中 test_credential_chain_env_var 读到空值后 fallback 到 不存在的 ~/.claude/.credentials.json 文件而失败。 使用静态 Mutex 确保这两个测试串行执行。
1 parent 47e0d20 commit a1eb959

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

src/oauth/source.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,9 @@ pub fn write_codex_credentials_atomic(token: &OAuthToken) -> Result<()> {
524524
mod tests {
525525
use super::*;
526526

527+
/// 操作环境变量的测试必须串行执行,避免竞态条件
528+
static ENV_LOCK: std::sync::Mutex<()> = std::sync::Mutex::new(());
529+
527530
#[test]
528531
fn test_extract_jwt_exp() {
529532
use base64::Engine;
@@ -581,7 +584,7 @@ mod tests {
581584

582585
#[test]
583586
fn test_credential_chain_env_var() {
584-
// 测试 env var 优先级
587+
let _lock = ENV_LOCK.lock().unwrap();
585588
std::env::set_var("ANTHROPIC_API_KEY", "test-key-123");
586589
let cred = load_credential_chain(&OAuthProvider::Claude).unwrap();
587590
assert_eq!(cred.access_token, "test-key-123");
@@ -591,6 +594,7 @@ mod tests {
591594

592595
#[test]
593596
fn test_credential_chain_empty_env_skipped() {
597+
let _lock = ENV_LOCK.lock().unwrap();
594598
std::env::set_var("ANTHROPIC_API_KEY", "");
595599
// 空值应被跳过,如果文件也不存在则报错
596600
let result = load_credential_chain(&OAuthProvider::Claude);

0 commit comments

Comments
 (0)