Skip to content

Commit 34e7077

Browse files
charley-oaicodex
andcommitted
Update tests for split contextual-user fragments
Co-authored-by: Codex <noreply@openai.com>
1 parent 93e16c3 commit 34e7077

File tree

2 files changed

+36
-35
lines changed

2 files changed

+36
-35
lines changed

codex-rs/core/tests/suite/compact.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -764,10 +764,15 @@ async fn multiple_auto_compact_per_task_runs_after_token_limit_hit() {
764764
let filtered_content = content
765765
.iter()
766766
.filter(|item| {
767-
!item
768-
.get("text")
769-
.and_then(|text| text.as_str())
770-
.is_some_and(|text| text.starts_with("# AGENTS.md instructions for "))
767+
let Some(text) = item.get("text").and_then(|text| text.as_str()) else {
768+
return true;
769+
};
770+
!text.starts_with("# AGENTS.md instructions for ")
771+
&& !text.starts_with("<user_instructions>")
772+
&& !text.starts_with("<skills_section>")
773+
&& !text.starts_with("<plugins>")
774+
&& !text.starts_with("<js_repl_instructions>")
775+
&& !text.starts_with("<child_agents_instructions>")
771776
})
772777
.cloned()
773778
.collect::<Vec<_>>();

codex-rs/core/tests/suite/prompt_caching.rs

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ fn assert_default_env_context(text: &str, cwd: &str, shell: &Shell) {
7272
);
7373
}
7474

75+
fn message_input_texts(value: &serde_json::Value) -> Vec<&str> {
76+
value["content"]
77+
.as_array()
78+
.expect("message content array")
79+
.iter()
80+
.filter_map(|entry| entry["text"].as_str())
81+
.collect()
82+
}
83+
7584
fn assert_tool_names(body: &serde_json::Value, expected_names: &[&str]) {
7685
assert_eq!(
7786
body["tools"]
@@ -338,25 +347,25 @@ async fn prefixes_context_and_instructions_once_and_consistently_across_requests
338347
"expected permissions + cached contextual user prefix + user msg"
339348
);
340349

341-
let ui_text = input1[1]["content"][0]["text"]
342-
.as_str()
343-
.expect("ui message text");
350+
let contextual_user_texts = message_input_texts(&input1[1]);
351+
let ui_text = contextual_user_texts
352+
.iter()
353+
.copied()
354+
.find(|text| text.contains("be consistent and helpful"))
355+
.expect("user instructions text");
344356
assert!(
345357
ui_text.contains("be consistent and helpful"),
346358
"expected user instructions in UI message: {ui_text}"
347359
);
348360

349361
let shell = default_user_shell();
350362
let cwd_str = config.cwd.to_string_lossy();
351-
let env_text = input1[1]["content"][1]["text"]
352-
.as_str()
363+
let env_text = contextual_user_texts
364+
.iter()
365+
.copied()
366+
.find(|text| text.starts_with(ENVIRONMENT_CONTEXT_OPEN_TAG))
353367
.expect("environment context text");
354368
assert_default_env_context(env_text, &cwd_str, &shell);
355-
assert_eq!(
356-
input1[1]["content"][1]["type"].as_str(),
357-
Some("input_text"),
358-
"expected environment context bundled after UI message in cached contextual message"
359-
);
360369
assert_eq!(input1[2], text_user_input("hello 1".to_string()));
361370

362371
let body2 = req2.single_request().body_json();
@@ -846,23 +855,16 @@ async fn send_user_turn_with_no_changes_does_not_send_environment_context() -> a
846855
let body2 = request2.body_json();
847856

848857
let expected_permissions_msg = body1["input"][0].clone();
849-
let expected_ui_msg = body1["input"][1].clone();
858+
let expected_contextual_user_msg_1 = body1["input"][1].clone();
850859

851860
let shell = default_user_shell();
852861
let default_cwd_lossy = default_cwd.to_string_lossy();
853-
let expected_env_text_1 = expected_ui_msg["content"][1]["text"]
854-
.as_str()
862+
let expected_env_text_1 = message_input_texts(&expected_contextual_user_msg_1)
863+
.into_iter()
864+
.find(|text| text.starts_with(ENVIRONMENT_CONTEXT_OPEN_TAG))
855865
.expect("cached environment context text")
856866
.to_string();
857867
assert_default_env_context(&expected_env_text_1, &default_cwd_lossy, &shell);
858-
859-
let expected_contextual_user_msg_1 = text_user_input_parts(vec![
860-
expected_ui_msg["content"][0]["text"]
861-
.as_str()
862-
.expect("cached user instructions text")
863-
.to_string(),
864-
expected_env_text_1,
865-
]);
866868
let expected_user_message_1 = text_user_input("hello 1".to_string());
867869

868870
let expected_input_1 = serde_json::Value::Array(vec![
@@ -970,21 +972,15 @@ async fn send_user_turn_with_changes_sends_environment_context() -> anyhow::Resu
970972
let body2 = request2.body_json();
971973

972974
let expected_permissions_msg = body1["input"][0].clone();
973-
let expected_ui_msg = body1["input"][1].clone();
975+
let expected_contextual_user_msg_1 = body1["input"][1].clone();
974976

975977
let shell = default_user_shell();
976-
let expected_env_text_1 = expected_ui_msg["content"][1]["text"]
977-
.as_str()
978+
let expected_env_text_1 = message_input_texts(&expected_contextual_user_msg_1)
979+
.into_iter()
980+
.find(|text| text.starts_with(ENVIRONMENT_CONTEXT_OPEN_TAG))
978981
.expect("cached environment context text")
979982
.to_string();
980983
assert_default_env_context(&expected_env_text_1, &default_cwd.to_string_lossy(), &shell);
981-
let expected_contextual_user_msg_1 = text_user_input_parts(vec![
982-
expected_ui_msg["content"][0]["text"]
983-
.as_str()
984-
.expect("cached user instructions text")
985-
.to_string(),
986-
expected_env_text_1,
987-
]);
988984
let expected_user_message_1 = text_user_input("hello 1".to_string());
989985
let expected_input_1 = serde_json::Value::Array(vec![
990986
expected_permissions_msg.clone(),

0 commit comments

Comments
 (0)