a73x

tests/completions_test.rs

Ref:   Size: 2.0 KiB

use std::process::Command;

/// Verify `completions bash` parses successfully and produces output
#[test]
fn completions_bash_produces_output() {
    let output = Command::new(env!("CARGO_BIN_EXE_git-collab"))
        .args(["completions", "bash"])
        .output()
        .expect("failed to run binary");
    assert!(output.status.success(), "stderr: {}", String::from_utf8_lossy(&output.stderr));
    let stdout = String::from_utf8_lossy(&output.stdout);
    assert!(stdout.contains("complete"), "bash completions should contain 'complete': {}", stdout);
}

/// Verify `completions zsh` parses successfully and produces output
#[test]
fn completions_zsh_produces_output() {
    let output = Command::new(env!("CARGO_BIN_EXE_git-collab"))
        .args(["completions", "zsh"])
        .output()
        .expect("failed to run binary");
    assert!(output.status.success(), "stderr: {}", String::from_utf8_lossy(&output.stderr));
    let stdout = String::from_utf8_lossy(&output.stdout);
    assert!(!stdout.is_empty(), "zsh completions should not be empty");
}

/// Verify `completions fish` parses successfully and produces output
#[test]
fn completions_fish_produces_output() {
    let output = Command::new(env!("CARGO_BIN_EXE_git-collab"))
        .args(["completions", "fish"])
        .output()
        .expect("failed to run binary");
    assert!(output.status.success(), "stderr: {}", String::from_utf8_lossy(&output.stderr));
    let stdout = String::from_utf8_lossy(&output.stdout);
    assert!(stdout.contains("complete"), "fish completions should contain 'complete': {}", stdout);
}

/// Verify completions work without a git repo (run from /tmp)
#[test]
fn completions_work_without_git_repo() {
    let output = Command::new(env!("CARGO_BIN_EXE_git-collab"))
        .args(["completions", "bash"])
        .current_dir(std::env::temp_dir())
        .output()
        .expect("failed to run binary");
    assert!(output.status.success(), "completions should work outside a git repo: {}", String::from_utf8_lossy(&output.stderr));
}