processkit 3.0.2

Async child-process management for tokio: whole-tree kill-on-drop (no orphans), plus streaming, pipelines, timeouts, and supervision
Documentation
use std::time::Duration;

use processkit::{Outcome, ProcessResult};

#[test]
fn external_callers_can_round_trip_overflow_totals() {
    let original = ProcessResult::from_parts(
        "tool",
        "stdout".to_owned(),
        "stderr".to_owned(),
        Outcome::Exited(3),
        Some(Duration::from_millis(25)),
        Duration::from_secs(2),
        true,
        17,
        4096,
        vec![0, 3],
    );

    assert_eq!(original.total_lines(), 17);
    assert_eq!(original.total_bytes(), 4096);

    let rebuilt = ProcessResult::from_parts(
        original.program(),
        original.stdout().clone(),
        original.stderr(),
        original.outcome(),
        original.configured_timeout(),
        original.duration(),
        original.truncated(),
        original.total_lines(),
        original.total_bytes(),
        original.ok_codes().to_vec(),
    );

    assert_eq!(rebuilt.total_lines(), original.total_lines());
    assert_eq!(rebuilt.total_bytes(), original.total_bytes());
    assert_eq!(rebuilt.duration(), original.duration());
    assert_eq!(rebuilt.truncated(), original.truncated());
}