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));
}