From 0f3c232541797d0f5cce814cc1da2fbdda227ee2 Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim Date: Mon, 5 Jan 2026 12:47:00 -0800 Subject: [PATCH] tests --- codex-rs/tui/src/model_migration.rs | 201 ++++++++++++++-------------- 1 file changed, 98 insertions(+), 103 deletions(-) diff --git a/codex-rs/tui/src/model_migration.rs b/codex-rs/tui/src/model_migration.rs index fe6d306808..41703c00da 100644 --- a/codex-rs/tui/src/model_migration.rs +++ b/codex-rs/tui/src/model_migration.rs @@ -733,109 +733,6 @@ mod prompt_ui { } } -#[cfg(test)] -mod tests { - use super::*; - use codex_core::config::ConfigBuilder; - use codex_protocol::openai_models::ReasoningEffort; - use codex_protocol::openai_models::ReasoningEffortPreset; - use pretty_assertions::assert_eq; - use std::collections::HashMap; - use tempfile::TempDir; - - async fn test_config(temp_home: &TempDir) -> Config { - ConfigBuilder::default() - .codex_home(temp_home.path().to_path_buf()) - .build() - .await - .expect("build config") - } - - fn effort_preset(effort: ReasoningEffort) -> ReasoningEffortPreset { - ReasoningEffortPreset { - effort, - description: String::new(), - } - } - - fn preset( - model: &str, - supported_reasoning_efforts: Vec, - upgrade: Option, - ) -> ModelPreset { - ModelPreset { - id: model.to_string(), - model: model.to_string(), - display_name: model.to_string(), - description: String::new(), - default_reasoning_effort: ReasoningEffort::Medium, - supported_reasoning_efforts: supported_reasoning_efforts - .into_iter() - .map(effort_preset) - .collect(), - is_default: false, - upgrade, - show_in_picker: true, - supported_in_api: true, - } - } - - #[tokio::test] - async fn accept_migration_applies_reasoning_effort_mapping_and_drops_unsupported_effort() { - let temp_home = TempDir::new().expect("tempdir"); - let mut config = test_config(&temp_home).await; - config.model_reasoning_effort = Some(ReasoningEffort::High); - - let mut mapping = HashMap::new(); - mapping.insert(ReasoningEffort::High, ReasoningEffort::Medium); - let upgrade = ModelUpgrade { - id: "to".to_string(), - reasoning_effort_mapping: Some(mapping), - migration_config_key: "k".to_string(), - model_link: None, - upgrade_copy: None, - }; - - let mapped_supported_presets = vec![ - preset("from", vec![ReasoningEffort::High], Some(upgrade)), - preset("to", vec![ReasoningEffort::Medium], None), - ]; - - apply_reasoning_effort_mapping_for_upgrade( - &mut config, - "from", - "to", - &mapped_supported_presets, - ); - assert_eq!(config.model_reasoning_effort, Some(ReasoningEffort::Medium)); - - config.model_reasoning_effort = Some(ReasoningEffort::High); - - let mut mapping = HashMap::new(); - mapping.insert(ReasoningEffort::High, ReasoningEffort::Medium); - let upgrade = ModelUpgrade { - id: "to".to_string(), - reasoning_effort_mapping: Some(mapping), - migration_config_key: "k".to_string(), - model_link: None, - upgrade_copy: None, - }; - - let mapped_unsupported_presets = vec![ - preset("from", vec![ReasoningEffort::High], Some(upgrade)), - preset("to", vec![ReasoningEffort::Low], None), - ]; - - apply_reasoning_effort_mapping_for_upgrade( - &mut config, - "from", - "to", - &mapped_unsupported_presets, - ); - assert_eq!(config.model_reasoning_effort, None); - } -} - #[cfg(test)] mod tests { use super::prompt_ui::ModelMigrationOutcome; @@ -1012,4 +909,102 @@ mod tests { assert!(screen.is_done()); assert!(matches!(screen.outcome(), ModelMigrationOutcome::Rejected)); } + + #[tokio::test] + async fn accept_migration_applies_reasoning_effort_mapping_and_drops_unsupported_effort() { + use super::ModelUpgrade; + use super::apply_reasoning_effort_mapping_for_upgrade; + use codex_core::config::ConfigBuilder; + use codex_protocol::openai_models::ModelPreset; + use codex_protocol::openai_models::ReasoningEffort; + use codex_protocol::openai_models::ReasoningEffortPreset; + use pretty_assertions::assert_eq; + use std::collections::HashMap; + use tempfile::TempDir; + + fn effort_preset(effort: ReasoningEffort) -> ReasoningEffortPreset { + ReasoningEffortPreset { + effort, + description: String::new(), + } + } + + fn preset( + model: &str, + supported_reasoning_efforts: Vec, + upgrade: Option, + ) -> ModelPreset { + ModelPreset { + id: model.to_string(), + model: model.to_string(), + display_name: model.to_string(), + description: String::new(), + default_reasoning_effort: ReasoningEffort::Medium, + supported_reasoning_efforts: supported_reasoning_efforts + .into_iter() + .map(effort_preset) + .collect(), + is_default: false, + upgrade, + show_in_picker: true, + supported_in_api: true, + } + } + + let temp_home = TempDir::new().expect("tempdir"); + let mut config = ConfigBuilder::default() + .codex_home(temp_home.path().to_path_buf()) + .build() + .await + .expect("build config"); + config.model_reasoning_effort = Some(ReasoningEffort::High); + + let mut mapping = HashMap::new(); + mapping.insert(ReasoningEffort::High, ReasoningEffort::Medium); + let upgrade = ModelUpgrade { + id: "to".to_string(), + reasoning_effort_mapping: Some(mapping), + migration_config_key: "k".to_string(), + model_link: None, + upgrade_copy: None, + }; + + let mapped_supported_presets = vec![ + preset("from", vec![ReasoningEffort::High], Some(upgrade)), + preset("to", vec![ReasoningEffort::Medium], None), + ]; + + apply_reasoning_effort_mapping_for_upgrade( + &mut config, + "from", + "to", + &mapped_supported_presets, + ); + assert_eq!(config.model_reasoning_effort, Some(ReasoningEffort::Medium)); + + config.model_reasoning_effort = Some(ReasoningEffort::High); + + let mut mapping = HashMap::new(); + mapping.insert(ReasoningEffort::High, ReasoningEffort::Medium); + let upgrade = ModelUpgrade { + id: "to".to_string(), + reasoning_effort_mapping: Some(mapping), + migration_config_key: "k".to_string(), + model_link: None, + upgrade_copy: None, + }; + + let mapped_unsupported_presets = vec![ + preset("from", vec![ReasoningEffort::High], Some(upgrade)), + preset("to", vec![ReasoningEffort::Low], None), + ]; + + apply_reasoning_effort_mapping_for_upgrade( + &mut config, + "from", + "to", + &mapped_unsupported_presets, + ); + assert_eq!(config.model_reasoning_effort, None); + } }