Codex Handbook
memories/write/src/prompts_tests.rs 71 lines
use super::*;use codex_models_manager::model_info::model_info_from_slug;use tempfile::tempdir;#[test]fn build_stage_one_input_message_truncates_rollout_using_model_context_window() {    let input = format!("{}{}{}", "a".repeat(700_000), "middle", "z".repeat(700_000));    let mut model_info = model_info_from_slug("gpt-5.3-codex");    model_info.context_window = Some(123_000);    let expected_rollout_token_limit = usize::try_from(        ((123_000_i64 * model_info.effective_context_window_percent) / 100)            * crate::stage_one::CONTEXT_WINDOW_PERCENT            / 100,    )    .unwrap();    let expected_truncated = truncate_text(        &input,        TruncationPolicy::Tokens(expected_rollout_token_limit),    );    let message = build_stage_one_input_message(        &model_info,        Path::new("/tmp/rollout.jsonl"),        Path::new("/tmp"),        &input,    )    .unwrap();    assert!(expected_truncated.contains("tokens truncated"));    assert!(expected_truncated.starts_with('a'));    assert!(expected_truncated.ends_with('z'));    assert!(message.contains(&expected_truncated));}#[test]fn build_stage_one_input_message_uses_default_limit_when_model_context_window_missing() {    let input = format!("{}{}{}", "a".repeat(700_000), "middle", "z".repeat(700_000));    let mut model_info = model_info_from_slug("gpt-5.3-codex");    model_info.context_window = None;    model_info.max_context_window = None;    let expected_truncated = truncate_text(        &input,        TruncationPolicy::Tokens(crate::stage_one::DEFAULT_ROLLOUT_TOKEN_LIMIT),    );    let message = build_stage_one_input_message(        &model_info,        Path::new("/tmp/rollout.jsonl"),        Path::new("/tmp"),        &input,    )    .unwrap();    assert!(message.contains(&expected_truncated));}#[test]fn build_consolidation_prompt_points_to_workspace_diff_and_extension_tree() {    let temp = tempdir().unwrap();    let memory_root = temp.path().join("memories");    let memory_extensions_root = memory_root.join("extensions");    std::fs::create_dir_all(&memory_extensions_root).unwrap();    let prompt = build_consolidation_prompt(&memory_root);    assert!(prompt.contains("Memory workspace diff:"));    assert!(prompt.contains("phase2_workspace_diff.md"));    assert!(prompt.contains(&format!(        "Memory extensions (under {}/):",        memory_extensions_root.display()    )));    assert!(prompt.contains("workspace diff shows deleted extension resource files"));}