mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
cfc23eee3d
Rename `no_memories_if_mcp_or_web_search` → `disable_on_external_context` with backward compatibility While doing so, we add a key alias system on our layer merging system. What we try to avoid is a case where a company managed config use an old name while the user has a new name in it's local config (which would make the deserialization fail)
101 lines
2.1 KiB
Rust
101 lines
2.1 KiB
Rust
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 = true
|
|
no_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);
|
|
}
|