exec/tests/suite/ephemeral.rs
67 lines
#![cfg(not(target_os = "windows"))]#![allow(clippy::unwrap_used)]use core_test_support::responses;use core_test_support::skip_if_no_network;use core_test_support::test_codex_exec::test_codex_exec;use walkdir::WalkDir;use wiremock::MockServer;fn exec_sse_response() -> String { responses::sse(vec![ responses::ev_response_created("resp-ephemeral"), responses::ev_assistant_message("msg-ephemeral", "ephemeral response"), responses::ev_completed("resp-ephemeral"), ])}fn session_rollout_count(home_path: &std::path::Path) -> usize { let sessions_dir = home_path.join("sessions"); if !sessions_dir.exists() { return 0; } WalkDir::new(sessions_dir) .into_iter() .filter_map(Result::ok) .filter(|entry| entry.file_type().is_file()) .filter(|entry| entry.file_name().to_string_lossy().ends_with(".jsonl")) .count()}#[tokio::test(flavor = "multi_thread", worker_threads = 2)]async fn persists_rollout_file_by_default() -> anyhow::Result<()> { skip_if_no_network!(Ok(())); let test = test_codex_exec(); let server = MockServer::start().await; let _response_mock = responses::mount_sse_once(&server, exec_sse_response()).await; test.cmd_with_server(&server) .arg("--skip-git-repo-check") .arg("default persistence behavior") .assert() .code(0); assert_eq!(session_rollout_count(test.home_path()), 1); Ok(())}#[tokio::test(flavor = "multi_thread", worker_threads = 2)]async fn does_not_persist_rollout_file_in_ephemeral_mode() -> anyhow::Result<()> { skip_if_no_network!(Ok(())); let test = test_codex_exec(); let server = MockServer::start().await; let _response_mock = responses::mount_sse_once(&server, exec_sse_response()).await; test.cmd_with_server(&server) .arg("--skip-git-repo-check") .arg("--ephemeral") .arg("ephemeral behavior") .assert() .code(0); assert_eq!(session_rollout_count(test.home_path()), 0); Ok(())}