Codex Handbook
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);}