From efccf741700747a83cfe0300030dab1496409259 Mon Sep 17 00:00:00 2001 From: aibrahim-oai Date: Fri, 11 Jul 2025 13:10:26 -0700 Subject: [PATCH] Add Rust CLI test --- codex-rs/Cargo.lock | 3 +++ codex-rs/exec/Cargo.toml | 5 +++++ codex-rs/exec/tests/tool_invocation.rs | 29 ++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 codex-rs/exec/tests/tool_invocation.rs diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 2909c2c594..74c2968ce4 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -669,14 +669,17 @@ name = "codex-exec" version = "0.0.0" dependencies = [ "anyhow", + "assert_cmd", "chrono", "clap", "codex-common", "codex-core", "codex-linux-sandbox", "owo-colors", + "predicates", "serde_json", "shlex", + "tempfile", "tokio", "tracing", "tracing-subscriber", diff --git a/codex-rs/exec/Cargo.toml b/codex-rs/exec/Cargo.toml index ed01b78ec8..11b0bea084 100644 --- a/codex-rs/exec/Cargo.toml +++ b/codex-rs/exec/Cargo.toml @@ -37,3 +37,8 @@ tokio = { version = "1", features = [ ] } tracing = { version = "0.1.41", features = ["log"] } tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } + +[dev-dependencies] +assert_cmd = "2" +predicates = "3" +tempfile = "3" diff --git a/codex-rs/exec/tests/tool_invocation.rs b/codex-rs/exec/tests/tool_invocation.rs new file mode 100644 index 0000000000..011007ff95 --- /dev/null +++ b/codex-rs/exec/tests/tool_invocation.rs @@ -0,0 +1,29 @@ +#![allow(clippy::unwrap_used, clippy::expect_used)] + +use codex_core::exec::{ExecParams, SandboxType, process_exec_tool_call}; +use codex_core::protocol::SandboxPolicy; +use std::collections::HashMap; +use std::sync::Arc; +use tokio::sync::Notify; + +#[tokio::test] +async fn echo_command_outputs_text() { + let params = ExecParams { + command: vec!["echo".into(), "Hello".into()], + cwd: std::env::current_dir().unwrap(), + timeout_ms: None, + env: HashMap::new(), + }; + let policy = SandboxPolicy::new_workspace_write_policy(); + let output = process_exec_tool_call( + params, + SandboxType::None, + Arc::new(Notify::new()), + &policy, + &None, + ) + .await + .expect("exec failed"); + assert_eq!(output.exit_code, 0); + assert!(output.stdout.contains("Hello")); +}