mirror of
https://github.com/openai/codex.git
synced 2026-09-15 12:08:01 +00:00
clean up tests
This commit is contained in:
@@ -841,7 +841,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn build_available_models_picks_default_after_hiding_hidden_models() {
|
||||
async fn build_available_models_respects_visibility_defaults_and_overrides() {
|
||||
let codex_home = tempdir().expect("temp dir");
|
||||
let auth_manager =
|
||||
AuthManager::from_auth_for_testing(CodexAuth::from_api_key("Test API Key"));
|
||||
@@ -865,27 +865,15 @@ mod tests {
|
||||
.build()
|
||||
.await
|
||||
.expect("load default test config");
|
||||
let available = manager.build_available_models(vec![hidden_model, visible_model], &config);
|
||||
let available_default = manager
|
||||
.build_available_models(vec![hidden_model.clone(), visible_model.clone()], &config);
|
||||
assert_eq!(
|
||||
available_default,
|
||||
vec![expected_hidden.clone(), expected_visible]
|
||||
);
|
||||
|
||||
assert_eq!(available, vec![expected_hidden, expected_visible]);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn build_available_models_applies_model_info_overrides() {
|
||||
let codex_home = tempdir().expect("temp dir");
|
||||
let auth_manager =
|
||||
AuthManager::from_auth_for_testing(CodexAuth::from_api_key("Test API Key"));
|
||||
let provider = provider_for("http://example.test".to_string());
|
||||
let mut manager =
|
||||
ModelsManager::with_provider(codex_home.path().to_path_buf(), auth_manager, provider);
|
||||
manager.local_models = Vec::new();
|
||||
|
||||
let mut config = ConfigBuilder::default()
|
||||
.codex_home(codex_home.path().to_path_buf())
|
||||
.build()
|
||||
.await
|
||||
.expect("load default test config");
|
||||
config.model_info_overrides.insert(
|
||||
let mut override_config = config;
|
||||
override_config.model_info_overrides.insert(
|
||||
"visible".to_string(),
|
||||
ModelInfoPatch {
|
||||
display_name: Some("Visible Local Override".to_string()),
|
||||
@@ -893,17 +881,21 @@ mod tests {
|
||||
..Default::default()
|
||||
},
|
||||
);
|
||||
|
||||
let visible_model = remote_model_with_visibility("visible", "Visible", 1, "list");
|
||||
let hidden_model = remote_model_with_visibility("hidden", "Hidden", 0, "hide");
|
||||
let available = manager.build_available_models(vec![hidden_model, visible_model], &config);
|
||||
|
||||
let visible = available
|
||||
let available_overridden =
|
||||
manager.build_available_models(vec![hidden_model, visible_model], &override_config);
|
||||
let visible = available_overridden
|
||||
.iter()
|
||||
.find(|preset| preset.model == "visible")
|
||||
.expect("visible model should exist");
|
||||
assert_eq!(visible.display_name, "Visible Local Override");
|
||||
assert!(!visible.show_in_picker);
|
||||
assert!(
|
||||
available_overridden
|
||||
.iter()
|
||||
.find(|preset| preset.model == "hidden")
|
||||
.is_some_and(|preset| preset.is_default),
|
||||
"when no model is shown in picker, first model should be marked default"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -2,7 +2,6 @@ use codex_core::CodexAuth;
|
||||
use codex_core::features::Feature;
|
||||
use codex_core::models_manager::manager::ModelsManager;
|
||||
use codex_protocol::openai_models::ModelInfoPatch;
|
||||
use codex_protocol::openai_models::ModelVisibility;
|
||||
use codex_protocol::openai_models::TruncationPolicyConfig;
|
||||
use core_test_support::load_default_config_for_test;
|
||||
use pretty_assertions::assert_eq;
|
||||
@@ -45,48 +44,11 @@ async fn offline_model_info_with_tool_output_override() {
|
||||
);
|
||||
}
|
||||
|
||||
// Existing remote model path:
|
||||
// fetch model metadata for a known slug, then apply per-slug patch values from config.
|
||||
// Unknown model path + prefix-resolution path:
|
||||
// verify model_info_overrides apply both when the slug falls back to synthetic metadata and when
|
||||
// the requested slug differs from the resolved remote slug (longest-prefix match path).
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn model_info_patch_overrides_remote_model_fields() {
|
||||
let codex_home = TempDir::new().expect("create temp dir");
|
||||
let mut config = load_default_config_for_test(&codex_home).await;
|
||||
config.features.enable(Feature::RemoteModels);
|
||||
let auth_manager = codex_core::AuthManager::from_auth_for_testing(
|
||||
CodexAuth::create_dummy_chatgpt_auth_for_testing(),
|
||||
);
|
||||
let manager = ModelsManager::new(config.codex_home.clone(), auth_manager);
|
||||
|
||||
let mut baseline_config = config.clone();
|
||||
baseline_config.model_info_overrides.clear();
|
||||
let baseline = manager.get_model_info("gpt-5.1", &baseline_config).await;
|
||||
|
||||
config.model_info_overrides.insert(
|
||||
"gpt-5.1".to_string(),
|
||||
ModelInfoPatch {
|
||||
display_name: Some("gpt-5.1-dev".to_string()),
|
||||
context_window: Some(123_456),
|
||||
visibility: Some(ModelVisibility::Hide),
|
||||
supported_in_api: Some(false),
|
||||
..Default::default()
|
||||
},
|
||||
);
|
||||
let model_info = manager.get_model_info("gpt-5.1", &config).await;
|
||||
|
||||
let mut expected = baseline;
|
||||
expected.display_name = "gpt-5.1-dev".to_string();
|
||||
expected.context_window = Some(123_456);
|
||||
expected.visibility = ModelVisibility::Hide;
|
||||
expected.supported_in_api = false;
|
||||
|
||||
assert_eq!(model_info, expected);
|
||||
}
|
||||
|
||||
// Unknown model path:
|
||||
// when slug is not known remotely, manager falls back to synthetic metadata and still
|
||||
// applies the patch for that requested slug.
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn model_info_patch_can_define_new_model_from_fallback() {
|
||||
async fn model_info_patch_applies_for_fallback_and_prefix_resolution_paths() {
|
||||
let codex_home = TempDir::new().expect("create temp dir");
|
||||
let mut config = load_default_config_for_test(&codex_home).await;
|
||||
config.features.enable(Feature::RemoteModels);
|
||||
@@ -119,6 +81,32 @@ async fn model_info_patch_can_define_new_model_from_fallback() {
|
||||
expected.base_instructions = "Custom model instructions".to_string();
|
||||
|
||||
assert_eq!(model_info, expected);
|
||||
|
||||
let requested_slug = "gpt-5.1-eval";
|
||||
let mut baseline_config = config;
|
||||
baseline_config.model_info_overrides.clear();
|
||||
let baseline = manager
|
||||
.get_model_info(requested_slug, &baseline_config)
|
||||
.await;
|
||||
|
||||
baseline_config.model_info_overrides.insert(
|
||||
requested_slug.to_string(),
|
||||
ModelInfoPatch {
|
||||
display_name: Some("gpt-5.1-eval-dev".to_string()),
|
||||
context_window: Some(456_789),
|
||||
..Default::default()
|
||||
},
|
||||
);
|
||||
let model_info = manager
|
||||
.get_model_info(requested_slug, &baseline_config)
|
||||
.await;
|
||||
|
||||
let mut expected = baseline;
|
||||
expected.slug = requested_slug.to_string();
|
||||
expected.display_name = "gpt-5.1-eval-dev".to_string();
|
||||
expected.context_window = Some(456_789);
|
||||
|
||||
assert_eq!(model_info, expected);
|
||||
}
|
||||
|
||||
// Offline helper parity path:
|
||||
@@ -144,41 +132,3 @@ async fn offline_helper_applies_model_info_patch() {
|
||||
assert_eq!(model_info.display_name, "gpt-fake-offline-dev".to_string());
|
||||
assert_eq!(model_info.context_window, Some(111_111));
|
||||
}
|
||||
|
||||
// Prefix-resolution path (requested slug differs from resolved slug):
|
||||
// request a custom slug that resolves to known remote base model via longest-prefix match,
|
||||
// then ensure the requested-slug patch is still applied.
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn model_info_patch_applies_when_requested_slug_differs_from_resolved_slug() {
|
||||
let codex_home = TempDir::new().expect("create temp dir");
|
||||
let mut config = load_default_config_for_test(&codex_home).await;
|
||||
config.features.enable(Feature::RemoteModels);
|
||||
let auth_manager = codex_core::AuthManager::from_auth_for_testing(
|
||||
CodexAuth::create_dummy_chatgpt_auth_for_testing(),
|
||||
);
|
||||
let manager = ModelsManager::new(config.codex_home.clone(), auth_manager);
|
||||
|
||||
let requested_slug = "gpt-5.1-eval";
|
||||
let mut baseline_config = config.clone();
|
||||
baseline_config.model_info_overrides.clear();
|
||||
let baseline = manager
|
||||
.get_model_info(requested_slug, &baseline_config)
|
||||
.await;
|
||||
|
||||
config.model_info_overrides.insert(
|
||||
requested_slug.to_string(),
|
||||
ModelInfoPatch {
|
||||
display_name: Some("gpt-5.1-eval-dev".to_string()),
|
||||
context_window: Some(456_789),
|
||||
..Default::default()
|
||||
},
|
||||
);
|
||||
let model_info = manager.get_model_info(requested_slug, &config).await;
|
||||
|
||||
let mut expected = baseline;
|
||||
expected.slug = requested_slug.to_string();
|
||||
expected.display_name = "gpt-5.1-eval-dev".to_string();
|
||||
expected.context_window = Some(456_789);
|
||||
|
||||
assert_eq!(model_info, expected);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user