rmux 0.7.1

A local terminal multiplexer with a tmux-style CLI, daemon runtime, Rust SDK, and ratatui integration.
#![cfg(unix)]

use std::error::Error;

mod common;

use common::{assert_success, stderr, stdout, CliHarness};

#[test]
fn cli_target_actions_run_split_resize_and_capture() -> Result<(), Box<dyn Error>> {
    let harness = CliHarness::new("cli-target-actions")?;

    assert_success(&harness.run(&["new-session", "-d", "-s", "alpha", "-x", "80", "-y", "24"])?);
    assert_success(&harness.run(&["split-window", "-h", "-t", "alpha:0.0"])?);
    assert_success(&harness.run(&["resize-pane", "-t", "alpha:0.1", "-x", "30"])?);

    let capture = harness.run(&["capture-pane", "-p", "-t", "alpha:0.1"])?;
    assert_eq!(capture.status.code(), Some(0), "capture-pane failed");
    assert!(stderr(&capture).is_empty(), "stderr: {}", stderr(&capture));

    Ok(())
}

#[test]
fn cli_target_action_errors_keep_tmux_target_shape() -> Result<(), Box<dyn Error>> {
    let harness = CliHarness::new("cli-target-action-errors")?;

    assert_success(&harness.run(&["new-session", "-d", "-s", "alpha"])?);
    for argv in [
        &["split-window", "-t", "alpha:0.99"][..],
        &["resize-pane", "-t", "alpha:0.99", "-x", "10"],
        &["capture-pane", "-p", "-t", "alpha:0.99"],
    ] {
        let output = harness.run(argv)?;
        assert_eq!(
            output.status.code(),
            Some(1),
            "{argv:?} unexpectedly succeeded with stdout {:?}",
            stdout(&output)
        );
        assert!(
            stdout(&output).is_empty(),
            "{argv:?} produced stdout {:?}",
            stdout(&output)
        );
        assert_eq!(stderr(&output), "can't find pane: 99\n", "{argv:?}");
    }

    Ok(())
}