state/src/runtime/test_support.rs
71 lines
#[cfg(test)]use chrono::DateTime;#[cfg(test)]use chrono::Utc;#[cfg(test)]use codex_protocol::ThreadId;#[cfg(test)]use codex_protocol::openai_models::ReasoningEffort;#[cfg(test)]use codex_protocol::protocol::AskForApproval;#[cfg(test)]use codex_protocol::protocol::SandboxPolicy;#[cfg(test)]use std::path::Path;#[cfg(test)]use std::path::PathBuf;#[cfg(test)]use std::time::SystemTime;#[cfg(test)]use std::time::UNIX_EPOCH;#[cfg(test)]use uuid::Uuid;#[cfg(test)]use crate::ThreadMetadata;#[cfg(test)]pub(super) fn unique_temp_dir() -> PathBuf { let nanos = SystemTime::now() .duration_since(UNIX_EPOCH) .map_or(0, |duration| duration.as_nanos()); std::env::temp_dir().join(format!( "codex-state-runtime-test-{nanos}-{}", Uuid::new_v4() ))}#[cfg(test)]pub(super) fn test_thread_metadata( codex_home: &Path, thread_id: ThreadId, cwd: PathBuf,) -> ThreadMetadata { let now = DateTime::<Utc>::from_timestamp(1_700_000_000, 0).expect("timestamp"); ThreadMetadata { id: thread_id, rollout_path: codex_home.join(format!("rollout-{thread_id}.jsonl")), created_at: now, updated_at: now, source: "cli".to_string(), thread_source: None, agent_nickname: None, agent_role: None, agent_path: None, model_provider: "test-provider".to_string(), model: Some("gpt-5".to_string()), reasoning_effort: Some(ReasoningEffort::Medium), cwd, cli_version: "0.0.0".to_string(), title: String::new(), preview: Some("hello".to_string()), sandbox_policy: crate::extract::enum_to_string(&SandboxPolicy::new_read_only_policy()), approval_mode: crate::extract::enum_to_string(&AskForApproval::OnRequest), tokens_used: 0, first_user_message: Some("hello".to_string()), archived_at: None, git_sha: None, git_branch: None, git_origin_url: None, }}