Codex Handbook
models-manager/src/test_support.rs 38 lines
//! Test-only helpers exposed for dependent crate tests.//!//! Production code should not depend on this module.use crate::ModelsManagerConfig;use crate::bundled_models_response;use crate::manager::construct_model_info_from_candidates;use codex_protocol::openai_models::ModelInfo;use codex_protocol::openai_models::ModelPreset;/// Get model identifier without consulting remote state or cache.pub fn get_model_offline_for_tests(model: Option<&str>) -> String {    if let Some(model) = model {        return model.to_string();    }    let mut response = bundled_models_response().unwrap_or_default();    response.models.sort_by_key(|model| model.priority);    let presets: Vec<ModelPreset> = response.models.into_iter().map(Into::into).collect();    presets        .iter()        .find(|preset| preset.show_in_picker)        .or_else(|| presets.first())        .map(|preset| preset.model.clone())        .unwrap_or_default()}/// Build `ModelInfo` without consulting remote state or cache.pub fn construct_model_info_offline_for_tests(    model: &str,    config: &ModelsManagerConfig,) -> ModelInfo {    let candidates: &[ModelInfo] = if let Some(model_catalog) = config.model_catalog.as_ref() {        &model_catalog.models    } else {        &[]    };    construct_model_info_from_candidates(model, candidates, config)}