unified-agent-api-claude-code 0.3.4

Async wrapper around the Claude Code CLI for non-interactive prompting
Documentation
use std::process::Stdio;
use std::time::Duration;

use super::{wait_for_child_exit, ChildExit};

#[cfg(unix)]
#[tokio::test]
async fn wait_for_child_exit_returns_status_when_deadline_has_elapsed() {
    let mut child = tokio::process::Command::new("sh")
        .args(["-c", "exit 0"])
        .stdout(Stdio::null())
        .stderr(Stdio::null())
        .spawn()
        .expect("spawn child");
    tokio::time::sleep(Duration::from_millis(50)).await;

    let outcome = wait_for_child_exit(
        &mut child,
        Some(Duration::from_millis(1)),
        Some(tokio::time::Instant::now()),
    )
    .await
    .expect("wait helper succeeds");

    match outcome {
        ChildExit::Exited(status) => assert!(status.success()),
        ChildExit::TimedOut => panic!("expected exited status, got timeout"),
    }
}