@@ -6714,11 +6714,10 @@ pub fn run_onboarding() -> anyhow::Result<Option<PathBuf>> {
67146714mod tests {
67156715 use super :: * ;
67166716 use std:: result:: Result as StdResult ;
6717- use std:: sync:: { Mutex , OnceLock } ;
67186717
6719- fn env_test_lock ( ) -> & ' static Mutex < ( ) > {
6720- static LOCK : OnceLock < Mutex < ( ) > > = OnceLock :: new ( ) ;
6721- LOCK . get_or_init ( || Mutex :: new ( ( ) ) )
6718+ fn env_test_lock ( ) -> & ' static parking_lot :: Mutex < ( ) > {
6719+ static LOCK : std :: sync :: OnceLock < parking_lot :: Mutex < ( ) > > = std :: sync :: OnceLock :: new ( ) ;
6720+ LOCK . get_or_init ( || parking_lot :: Mutex :: new ( ( ) ) )
67226721 }
67236722
67246723 struct EnvGuard {
@@ -6728,12 +6727,14 @@ mod tests {
67286727
67296728 impl EnvGuard {
67306729 fn new ( ) -> Self {
6731- const KEYS : [ & str ; 26 ] = [
6730+ // NOTE: Keep in sync with provider env vars that affect test behavior
6731+ const KEYS : [ & str ; 27 ] = [
67326732 "SPACEBOT_DIR" ,
67336733 "SPACEBOT_DEPLOYMENT" ,
67346734 "SPACEBOT_CRON_TIMEZONE" ,
67356735 "SPACEBOT_USER_TIMEZONE" ,
67366736 "ANTHROPIC_API_KEY" ,
6737+ "ANTHROPIC_BASE_URL" ,
67376738 "ANTHROPIC_OAUTH_TOKEN" ,
67386739 "OPENAI_API_KEY" ,
67396740 "OPENROUTER_API_KEY" ,
@@ -6896,7 +6897,7 @@ api_key = "sk-proj-xyz789"
68966897
68976898 #[ test]
68986899 fn test_llm_provider_tables_parse_with_env_and_lowercase_keys ( ) {
6899- let _lock = env_test_lock ( ) . lock ( ) . unwrap_or_else ( |e| e . into_inner ( ) ) ;
6900+ let _lock = env_test_lock ( ) . lock ( ) ;
69006901 let _env = EnvGuard :: new ( ) ;
69016902
69026903 let toml = r#"
@@ -6942,6 +6943,9 @@ api_key = "static-provider-key"
69426943
69436944 #[ test]
69446945 fn test_legacy_llm_keys_auto_migrate_to_providers ( ) {
6946+ let _lock = env_test_lock ( ) . lock ( ) ;
6947+ let _env = EnvGuard :: new ( ) ;
6948+
69456949 let toml = r#"
69466950[llm]
69476951anthropic_key = "legacy-anthropic-key"
@@ -7072,19 +7076,15 @@ name = "My OpenRouter"
70727076
70737077 #[ test]
70747078 fn test_needs_onboarding_without_config_or_env ( ) {
7075- let _lock = env_test_lock ( )
7076- . lock ( )
7077- . expect ( "failed to lock env test mutex" ) ;
7079+ let _lock = env_test_lock ( ) . lock ( ) ;
70787080 let _env = EnvGuard :: new ( ) ;
70797081
70807082 assert ! ( Config :: needs_onboarding( ) ) ;
70817083 }
70827084
70837085 #[ test]
70847086 fn test_needs_onboarding_with_anthropic_env_key ( ) {
7085- let _lock = env_test_lock ( )
7086- . lock ( )
7087- . expect ( "failed to lock env test mutex" ) ;
7087+ let _lock = env_test_lock ( ) . lock ( ) ;
70887088 let _env = EnvGuard :: new ( ) ;
70897089
70907090 unsafe {
@@ -7096,9 +7096,7 @@ name = "My OpenRouter"
70967096
70977097 #[ test]
70987098 fn test_needs_onboarding_false_with_oauth_credentials ( ) {
7099- let _lock = env_test_lock ( )
7100- . lock ( )
7101- . expect ( "failed to lock env test mutex" ) ;
7099+ let _lock = env_test_lock ( ) . lock ( ) ;
71027100 let _env = EnvGuard :: new ( ) ;
71037101
71047102 // Create an OAuth credentials file in the EnvGuard's temp dir
@@ -7115,9 +7113,7 @@ name = "My OpenRouter"
71157113
71167114 #[ test]
71177115 fn test_needs_onboarding_false_with_openai_oauth_credentials ( ) {
7118- let _lock = env_test_lock ( )
7119- . lock ( )
7120- . expect ( "failed to lock env test mutex" ) ;
7116+ let _lock = env_test_lock ( ) . lock ( ) ;
71217117 let _env = EnvGuard :: new ( ) ;
71227118
71237119 let instance_dir = Config :: default_instance_dir ( ) ;
@@ -7135,9 +7131,7 @@ name = "My OpenRouter"
71357131
71367132 #[ test]
71377133 fn test_load_from_env_populates_legacy_key_and_provider ( ) {
7138- let _lock = env_test_lock ( )
7139- . lock ( )
7140- . expect ( "failed to lock env test mutex" ) ;
7134+ let _lock = env_test_lock ( ) . lock ( ) ;
71417135 let _env = EnvGuard :: new ( ) ;
71427136
71437137 unsafe {
@@ -7159,9 +7153,7 @@ name = "My OpenRouter"
71597153
71607154 #[ test]
71617155 fn test_hosted_deployment_forces_api_bind_from_toml ( ) {
7162- let _lock = env_test_lock ( )
7163- . lock ( )
7164- . expect ( "failed to lock env test mutex" ) ;
7156+ let _lock = env_test_lock ( ) . lock ( ) ;
71657157 let _env = EnvGuard :: new ( ) ;
71667158
71677159 unsafe {
@@ -7181,9 +7173,7 @@ bind = "127.0.0.1"
71817173
71827174 #[ test]
71837175 fn test_hosted_deployment_forces_api_bind_from_env_defaults ( ) {
7184- let _lock = env_test_lock ( )
7185- . lock ( )
7186- . expect ( "failed to lock env test mutex" ) ;
7176+ let _lock = env_test_lock ( ) . lock ( ) ;
71877177 let _env = EnvGuard :: new ( ) ;
71887178
71897179 unsafe {
@@ -7299,9 +7289,7 @@ bind = "127.0.0.1"
72997289
73007290 #[ test]
73017291 fn test_cron_timezone_resolution_precedence ( ) {
7302- let _lock = env_test_lock ( )
7303- . lock ( )
7304- . expect ( "failed to lock env test mutex" ) ;
7292+ let _lock = env_test_lock ( ) . lock ( ) ;
73057293 let _env = EnvGuard :: new ( ) ;
73067294
73077295 unsafe {
@@ -7358,9 +7346,7 @@ id = "main"
73587346
73597347 #[ test]
73607348 fn test_cron_timezone_invalid_falls_back_to_system ( ) {
7361- let _lock = env_test_lock ( )
7362- . lock ( )
7363- . expect ( "failed to lock env test mutex" ) ;
7349+ let _lock = env_test_lock ( ) . lock ( ) ;
73647350 let _env = EnvGuard :: new ( ) ;
73657351
73667352 unsafe {
@@ -7380,9 +7366,7 @@ id = "main"
73807366
73817367 #[ test]
73827368 fn test_cron_timezone_invalid_default_uses_env_fallback ( ) {
7383- let _lock = env_test_lock ( )
7384- . lock ( )
7385- . expect ( "failed to lock env test mutex" ) ;
7369+ let _lock = env_test_lock ( ) . lock ( ) ;
73867370 let _env = EnvGuard :: new ( ) ;
73877371
73887372 unsafe {
@@ -7405,9 +7389,7 @@ id = "main"
74057389
74067390 #[ test]
74077391 fn test_user_timezone_resolution_precedence ( ) {
7408- let _lock = env_test_lock ( )
7409- . lock ( )
7410- . expect ( "failed to lock env test mutex" ) ;
7392+ let _lock = env_test_lock ( ) . lock ( ) ;
74117393 let _env = EnvGuard :: new ( ) ;
74127394
74137395 unsafe {
@@ -7454,9 +7436,7 @@ id = "main"
74547436
74557437 #[ test]
74567438 fn test_user_timezone_falls_back_to_cron_timezone ( ) {
7457- let _lock = env_test_lock ( )
7458- . lock ( )
7459- . expect ( "failed to lock env test mutex" ) ;
7439+ let _lock = env_test_lock ( ) . lock ( ) ;
74607440 let _env = EnvGuard :: new ( ) ;
74617441
74627442 let toml = r#"
@@ -7482,9 +7462,7 @@ id = "main"
74827462
74837463 #[ test]
74847464 fn test_user_timezone_invalid_falls_back_to_cron_timezone ( ) {
7485- let _lock = env_test_lock ( )
7486- . lock ( )
7487- . expect ( "failed to lock env test mutex" ) ;
7465+ let _lock = env_test_lock ( ) . lock ( ) ;
74887466 let _env = EnvGuard :: new ( ) ;
74897467
74907468 let toml = r#"
@@ -7507,9 +7485,7 @@ id = "main"
75077485
75087486 #[ test]
75097487 fn test_user_timezone_invalid_config_uses_env_fallback ( ) {
7510- let _lock = env_test_lock ( )
7511- . lock ( )
7512- . expect ( "failed to lock env test mutex" ) ;
7488+ let _lock = env_test_lock ( ) . lock ( ) ;
75137489 let _env = EnvGuard :: new ( ) ;
75147490
75157491 unsafe {
@@ -7797,6 +7773,9 @@ startup_delay_secs = 2
77977773 /// `LlmConfig` without wiring it up in `load_from_env` / `from_toml`, this test fails.
77987774 #[ test]
77997775 fn all_shorthand_keys_register_providers_via_toml ( ) {
7776+ let _lock = env_test_lock ( ) . lock ( ) ;
7777+ let _env = EnvGuard :: new ( ) ;
7778+
78007779 // (toml_key, toml_value, provider_name, expected_base_url_substring)
78017780 let cases: & [ ( & str , & str , & str , & str ) ] = & [
78027781 ( "anthropic_key" , "test-key" , "anthropic" , "anthropic.com" ) ,
@@ -7861,7 +7840,7 @@ startup_delay_secs = 2
78617840
78627841 #[ test]
78637842 fn all_shorthand_keys_register_providers_via_env ( ) {
7864- let _lock = env_test_lock ( ) . lock ( ) . unwrap ( ) ;
7843+ let _lock = env_test_lock ( ) . lock ( ) ;
78657844
78667845 // (env_var, env_value, provider_name, expected_base_url_substring)
78677846 let cases: & [ ( & str , & str , & str , & str ) ] = & [
@@ -8285,7 +8264,7 @@ startup_delay_secs = 2
82858264
82868265 #[ test]
82878266 fn toml_round_trip_with_named_instances ( ) {
8288- let _guard = env_test_lock ( ) . lock ( ) . unwrap ( ) ;
8267+ let _guard = env_test_lock ( ) . lock ( ) ;
82898268 let guard = EnvGuard :: new ( ) ;
82908269
82918270 let toml_content = r#"
@@ -8326,7 +8305,7 @@ chat_id = "-100111"
83268305
83278306 #[ test]
83288307 fn toml_backward_compat_no_adapter_field ( ) {
8329- let _guard = env_test_lock ( ) . lock ( ) . unwrap ( ) ;
8308+ let _guard = env_test_lock ( ) . lock ( ) ;
83308309 let guard = EnvGuard :: new ( ) ;
83318310
83328311 let toml_content = r#"
0 commit comments