Codex Handbook
config/src/strict_config_tests.rs 127 lines
use super::*;use crate::config_toml::ConfigToml;use crate::diagnostics::TextPosition;use crate::diagnostics::TextRange;use pretty_assertions::assert_eq;use std::path::PathBuf;#[test]fn ignored_toml_field_errors_accept_non_file_source_names() {    let source_name = "com.openai.codex:config_toml_base64";    let contents = r#"model = "gpt-5"unknown_key = true"#;    let value = toml::from_str::<TomlValue>(contents).expect("valid TOML");    let error = config_error_from_ignored_toml_value_fields_for_source_name::<ConfigToml>(        source_name,        contents,        value,    )    .expect("unknown field error");    assert_eq!(        error,        ConfigError::new(            PathBuf::from(source_name),            TextRange {                start: TextPosition { line: 3, column: 1 },                end: TextPosition {                    line: 3,                    column: 11,                },            },            "unknown configuration field `unknown_key`",        )    );}#[test]fn type_errors_take_precedence_over_ignored_fields() {    let path = Path::new("/tmp/config.toml");    let contents = r#"model_context_window = "wide"unknown_key = true"#;    let error =        config_error_from_ignored_toml_fields::<ConfigToml>(path, contents).expect("type error");    assert_eq!(        error,        ConfigError::new(            path.to_path_buf(),            TextRange {                start: TextPosition {                    line: 2,                    column: 24,                },                end: TextPosition {                    line: 2,                    column: 29,                },            },            "invalid type: string \"wide\", expected i64",        )    );}#[test]fn strict_config_rejects_unknown_feature_key() {    let path = Path::new("/tmp/config.toml");    let contents = r#"[features]foo = true"#;    let error = config_error_from_ignored_toml_fields::<ConfigToml>(path, contents)        .expect("unknown feature error");    assert_eq!(        error,        ConfigError::new(            path.to_path_buf(),            TextRange {                start: TextPosition { line: 3, column: 1 },                end: TextPosition { line: 3, column: 3 },            },            "unknown configuration field `features.foo`",        )    );}#[test]fn strict_config_rejects_unknown_profile_feature_key() {    let path = Path::new("/tmp/config.toml");    let contents = r#"[profiles.work.features]foo = true"#;    let error = config_error_from_ignored_toml_fields::<ConfigToml>(path, contents)        .expect("unknown feature error");    assert_eq!(        error,        ConfigError::new(            path.to_path_buf(),            TextRange {                start: TextPosition { line: 3, column: 1 },                end: TextPosition { line: 3, column: 3 },            },            "unknown configuration field `profiles.work.features.foo`",        )    );}#[test]fn strict_config_accepts_opaque_desktop_keys() {    let path = Path::new("/tmp/config.toml");    let contents = r#"[desktop]appearanceTheme = "dark"[desktop.workspace]collapsed = true"#;    let error = config_error_from_ignored_toml_fields::<ConfigToml>(path, contents);    assert_eq!(error, None);}