mirror of
https://github.com/openai/codex.git
synced 2026-11-13 14:46:14 +00:00
feat: config aliases (#18140)
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)
This commit is contained in:
1 parent
af7b8d551c
commit
cfc23eee3d
14 files changed
+250
-34
No files matched your search
@@ -0,0 +1,100 @@
|
||||
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);
|
||||
}
|
||||
Reference in new issue
Block a user