#![allow(clippy::expect_used)]
use std::path::Path;
use std::process::{Command, Output, Stdio};
fn launch(path: &Path) -> Output {
Command::new(env!("CARGO_BIN_EXE_diffler"))
.arg(path)
.arg("--no-mcp")
.stdin(Stdio::null())
.output()
.expect("run diffler")
}
fn stderr(output: &Output) -> String {
String::from_utf8_lossy(&output.stderr).into_owned()
}
#[test]
fn outside_a_repository_it_explains_itself() {
let dir = tempfile::tempdir().expect("tempdir");
let output = launch(dir.path());
let stderr = stderr(&output);
assert_eq!(output.status.code(), Some(1));
assert!(stderr.contains("no git repository"), "{stderr}");
assert!(stderr.contains("git init"), "{stderr}");
assert!(!stderr.contains("Location:"), "{stderr}");
assert!(!stderr.contains("Backtrace"), "{stderr}");
}
#[test]
fn a_bare_repository_is_named_as_such() {
let dir = tempfile::tempdir().expect("tempdir");
git2::Repository::init_bare(dir.path()).expect("init bare");
let output = launch(dir.path());
let stderr = stderr(&output);
assert_eq!(output.status.code(), Some(1));
assert!(stderr.contains("bare repository"), "{stderr}");
}