mirror of
https://github.com/openai/codex.git
synced 2026-10-29 19:08:43 +00:00
Update tests for split contextual-user fragments
Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
co-authored by
Codex
parent
93e16c39cc
commit
34e707738f
@@ -764,10 +764,15 @@ async fn multiple_auto_compact_per_task_runs_after_token_limit_hit() {
|
||||
let filtered_content = content
|
||||
.iter()
|
||||
.filter(|item| {
|
||||
!item
|
||||
.get("text")
|
||||
.and_then(|text| text.as_str())
|
||||
.is_some_and(|text| text.starts_with("# AGENTS.md instructions for "))
|
||||
let Some(text) = item.get("text").and_then(|text| text.as_str()) else {
|
||||
return true;
|
||||
};
|
||||
!text.starts_with("# AGENTS.md instructions for ")
|
||||
&& !text.starts_with("<user_instructions>")
|
||||
&& !text.starts_with("<skills_section>")
|
||||
&& !text.starts_with("<plugins>")
|
||||
&& !text.starts_with("<js_repl_instructions>")
|
||||
&& !text.starts_with("<child_agents_instructions>")
|
||||
})
|
||||
.cloned()
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
@@ -72,6 +72,15 @@ fn assert_default_env_context(text: &str, cwd: &str, shell: &Shell) {
|
||||
);
|
||||
}
|
||||
|
||||
fn message_input_texts(value: &serde_json::Value) -> Vec<&str> {
|
||||
value["content"]
|
||||
.as_array()
|
||||
.expect("message content array")
|
||||
.iter()
|
||||
.filter_map(|entry| entry["text"].as_str())
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn assert_tool_names(body: &serde_json::Value, expected_names: &[&str]) {
|
||||
assert_eq!(
|
||||
body["tools"]
|
||||
@@ -338,9 +347,12 @@ async fn prefixes_context_and_instructions_once_and_consistently_across_requests
|
||||
"expected permissions + cached contextual user prefix + user msg"
|
||||
);
|
||||
|
||||
let ui_text = input1[1]["content"][0]["text"]
|
||||
.as_str()
|
||||
.expect("ui message text");
|
||||
let contextual_user_texts = message_input_texts(&input1[1]);
|
||||
let ui_text = contextual_user_texts
|
||||
.iter()
|
||||
.copied()
|
||||
.find(|text| text.contains("be consistent and helpful"))
|
||||
.expect("user instructions text");
|
||||
assert!(
|
||||
ui_text.contains("be consistent and helpful"),
|
||||
"expected user instructions in UI message: {ui_text}"
|
||||
@@ -348,15 +360,12 @@ async fn prefixes_context_and_instructions_once_and_consistently_across_requests
|
||||
|
||||
let shell = default_user_shell();
|
||||
let cwd_str = config.cwd.to_string_lossy();
|
||||
let env_text = input1[1]["content"][1]["text"]
|
||||
.as_str()
|
||||
let env_text = contextual_user_texts
|
||||
.iter()
|
||||
.copied()
|
||||
.find(|text| text.starts_with(ENVIRONMENT_CONTEXT_OPEN_TAG))
|
||||
.expect("environment context text");
|
||||
assert_default_env_context(env_text, &cwd_str, &shell);
|
||||
assert_eq!(
|
||||
input1[1]["content"][1]["type"].as_str(),
|
||||
Some("input_text"),
|
||||
"expected environment context bundled after UI message in cached contextual message"
|
||||
);
|
||||
assert_eq!(input1[2], text_user_input("hello 1".to_string()));
|
||||
|
||||
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
|
||||
let body2 = request2.body_json();
|
||||
|
||||
let expected_permissions_msg = body1["input"][0].clone();
|
||||
let expected_ui_msg = body1["input"][1].clone();
|
||||
let expected_contextual_user_msg_1 = body1["input"][1].clone();
|
||||
|
||||
let shell = default_user_shell();
|
||||
let default_cwd_lossy = default_cwd.to_string_lossy();
|
||||
let expected_env_text_1 = expected_ui_msg["content"][1]["text"]
|
||||
.as_str()
|
||||
let expected_env_text_1 = message_input_texts(&expected_contextual_user_msg_1)
|
||||
.into_iter()
|
||||
.find(|text| text.starts_with(ENVIRONMENT_CONTEXT_OPEN_TAG))
|
||||
.expect("cached environment context text")
|
||||
.to_string();
|
||||
assert_default_env_context(&expected_env_text_1, &default_cwd_lossy, &shell);
|
||||
|
||||
let expected_contextual_user_msg_1 = text_user_input_parts(vec![
|
||||
expected_ui_msg["content"][0]["text"]
|
||||
.as_str()
|
||||
.expect("cached user instructions text")
|
||||
.to_string(),
|
||||
expected_env_text_1,
|
||||
]);
|
||||
let expected_user_message_1 = text_user_input("hello 1".to_string());
|
||||
|
||||
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
|
||||
let body2 = request2.body_json();
|
||||
|
||||
let expected_permissions_msg = body1["input"][0].clone();
|
||||
let expected_ui_msg = body1["input"][1].clone();
|
||||
let expected_contextual_user_msg_1 = body1["input"][1].clone();
|
||||
|
||||
let shell = default_user_shell();
|
||||
let expected_env_text_1 = expected_ui_msg["content"][1]["text"]
|
||||
.as_str()
|
||||
let expected_env_text_1 = message_input_texts(&expected_contextual_user_msg_1)
|
||||
.into_iter()
|
||||
.find(|text| text.starts_with(ENVIRONMENT_CONTEXT_OPEN_TAG))
|
||||
.expect("cached environment context text")
|
||||
.to_string();
|
||||
assert_default_env_context(&expected_env_text_1, &default_cwd.to_string_lossy(), &shell);
|
||||
let expected_contextual_user_msg_1 = text_user_input_parts(vec![
|
||||
expected_ui_msg["content"][0]["text"]
|
||||
.as_str()
|
||||
.expect("cached user instructions text")
|
||||
.to_string(),
|
||||
expected_env_text_1,
|
||||
]);
|
||||
let expected_user_message_1 = text_user_input("hello 1".to_string());
|
||||
let expected_input_1 = serde_json::Value::Array(vec![
|
||||
expected_permissions_msg.clone(),
|
||||
|
||||
Reference in New Issue
Block a user