Compare
Sorry, something went wrong.
No results found
test: 修复 mink-server 环境变量测试的并发竞态
`user_minkrc_model_is_default_when_no_env` 在 CI 偶发失败(期望 env-model
却读到 .minkrc 默认值):三个测试文件在同一个二进制进程内并行读写全局
环境变量 `MODEL` / `HOME` / `DEEPSEEK_*`,无任何互斥——config.rs 的
`remove_var("MODEL")` 会与 agent_config.rs / registry.rs 的 `set_var("MODEL")`
交错,形成先写后删的窗口,使 env 优先级断言读到残留文件层值。
修复:
- `session/mod.rs` 新增 `#[cfg(test)] TEST_ENV_LOCK`(tokio::sync::Mutex,
跨 await 持锁不触发 await-holding-lock);注释说明所有 env 写测试必须持锁。
- 四个 env 写测试统一持锁:config.rs 两个(HOME/MODEL/MINK_HOME)、
agent_config.rs 的 env 覆盖测试、registry.rs 的 build_options 集成测试
(async 测试用 lock().await,同步测试用 blocking_lock())。
- 现有 `defaults_and_env_are_serialized_within_one_test` 的注释已声明该约束,
但此前没有跨文件互斥机制;registry.rs 的 save/restore 模式保留(锁内
恢复,避免持锁期间读取到别的测试写入的值)。
验证:`cargo test -p mink-server --bin mink-server` 连续 8 轮 24/24 全绿
(修复前同命令复现失败);workspace 全量测试通过(core 725/CLI 154/router
等),`cargo fmt --check` 与 `cargo clippy --workspace --all-targets
--all-features -- -D warnings` 零警告。