crabmate 0.5.0

Rust AI agent: OpenAI-compatible chat/completions, function calling, HTTP serve, ops CLI
Documentation
use super::*;

#[cfg(unix)]
#[test]
fn run_and_format_try_timeout_returns_timeout_error_with_partial_output() {
    let marker = format!("cm_cargo_runfmt_{}", std::process::id());
    let mut cmd = Command::new("bash");
    cmd.args([
        "-c",
        &format!("echo partial-cargo-out; sleep 60 # {marker}"),
    ]);
    let err = run_and_format_try(cmd, 4096, "cargo test", "cargo_test", Some(1))
        .expect_err("超时后应返回 Err");
    assert_eq!(err.code, "timeout");
    assert!(err.message.contains("命令执行超时"), "{:?}", err.message);
    assert!(
        err.message.contains("partial-cargo-out"),
        "{:?}",
        err.message
    );
    assert!(
        err.legacy_parsed.stdout.contains("partial-cargo-out"),
        "legacy_parsed 应保留部分 stdout: {:?}",
        err.legacy_parsed.stdout
    );
    std::thread::sleep(std::time::Duration::from_millis(200));
    assert!(
        !crate::cm_tools::subprocess_session::proc_cmdline_contains(&marker),
        "run_and_format_try 孙进程 sleep 仍在运行(进程组未杀干净)"
    );
}