config/src/merge_tests.rs
126 lines
use super::*;use crate::config_toml::ConfigToml;use crate::types::MemoriesToml;use pretty_assertions::assert_eq;fn parse_toml(value: &str) -> TomlValue { toml::from_str(value).expect("TOML should parse")}#[test]fn merge_toml_values_normalizes_legacy_key_from_base_layer() { let mut base = parse_toml( r#"[memories]no_memories_if_mcp_or_web_search = false"#, ); let overlay = parse_toml( r#"[memories]disable_on_external_context = true"#, ); merge_toml_values(&mut base, &overlay); let expected = parse_toml( r#"[memories]disable_on_external_context = true"#, ); assert_eq!(base, expected); let config: ConfigToml = base.try_into().expect("merged config should deserialize"); assert_eq!( config.memories, Some(MemoriesToml { disable_on_external_context: Some(true), ..Default::default() }) );}#[test]fn merge_toml_values_normalizes_legacy_key_from_overlay_layer() { let mut base = parse_toml( r#"[memories]disable_on_external_context = false"#, ); let overlay = parse_toml( r#"[memories]no_memories_if_mcp_or_web_search = true"#, ); merge_toml_values(&mut base, &overlay); let expected = parse_toml( r#"[memories]disable_on_external_context = true"#, ); assert_eq!(base, expected); let config: ConfigToml = base.try_into().expect("merged config should deserialize"); assert_eq!( config.memories, Some(MemoriesToml { disable_on_external_context: Some(true), ..Default::default() }) );}#[test]fn merge_toml_values_prefers_canonical_key_when_one_layer_has_both_names() { let mut base = TomlValue::Table(toml::map::Map::new()); let overlay = parse_toml( r#"[memories]disable_on_external_context = trueno_memories_if_mcp_or_web_search = false"#, ); merge_toml_values(&mut base, &overlay); let expected = parse_toml( r#"[memories]disable_on_external_context = true"#, ); assert_eq!(base, expected);}#[test]fn merge_toml_values_normalizes_permission_network_domains_before_overlaying() { let mut base = parse_toml( r#"[permissions.dev.network.domains]"example.com" = "deny""#, ); let overlay = parse_toml( r#"[permissions.dev.network.domains]"EXAMPLE.COM" = "allow""#, ); merge_toml_values(&mut base, &overlay); let expected = parse_toml( r#"[permissions.dev.network.domains]"example.com" = "allow""#, ); assert_eq!(base, expected);}