#![allow(dead_code)]
use anyhow::{Result, bail};
pub fn run_cli_raw(args: &[&str]) -> Result<String> {
let output = assert_cmd::cargo::cargo_bin_cmd!("hubert")
.args(args)
.assert();
if output.get_output().status.success() {
Ok(String::from_utf8(output.get_output().stdout.to_vec()).unwrap())
} else {
bail!(
"Command failed: {:?}",
String::from_utf8(output.get_output().stderr.to_vec()).unwrap()
);
}
}
pub fn run_cli(args: &[&str]) -> Result<String> {
run_cli_raw(args).map(|s| s.trim().to_string())
}
pub fn run_cli_expect(args: &[&str], expected: &str) -> Result<()> {
let output = run_cli(args)?;
if output != expected.trim() {
bail!(
"\n\n=== Expected ===\n{}\n\n=== Got ===\n{}",
expected,
output
);
}
assert_eq!(expected.trim(), output);
Ok(())
}
pub fn run_cli_expect_error(args: &[&str]) -> Result<()> {
let result = assert_cmd::cargo::cargo_bin_cmd!("hubert")
.args(args)
.assert();
if result.get_output().status.success() {
bail!("Expected command to fail, but it succeeded");
}
Ok(())
}
pub fn run_cli_contains(args: &[&str], expected: &str) -> Result<()> {
let output = run_cli(args)?;
if !output.contains(expected) {
bail!(
"\n\n=== Expected to contain ===\n{}\n\n=== Got ===\n{}",
expected,
output
);
}
Ok(())
}
pub fn run_cli_allow_failure(args: &[&str]) -> String {
let output = assert_cmd::cargo::cargo_bin_cmd!("hubert")
.args(args)
.output()
.unwrap();
if output.status.success() {
String::from_utf8(output.stdout).unwrap().trim().to_string()
} else {
String::from_utf8(output.stderr).unwrap().trim().to_string()
}
}