#![allow(clippy::expect_used, clippy::unwrap_used, clippy::panic)]
use assert_cmd::Command;
use tempfile::TempDir;
fn doiget(dir: &TempDir) -> Command {
let mut cmd = Command::cargo_bin("doiget").expect("locate doiget binary");
let p = dir.path().to_str().expect("tempdir path utf-8");
cmd.env("HOME", p)
.env("USERPROFILE", p)
.env("APPDATA", p)
.env("XDG_CONFIG_HOME", p)
.env("DOIGET_MODE", "human");
cmd
}
#[test]
fn progress_and_no_progress_are_mutually_exclusive() {
let dir = TempDir::new().expect("tempdir");
doiget(&dir)
.args(["--progress", "--no-progress", "capabilities"])
.assert()
.failure()
.code(2);
}
#[test]
fn mode_quiet_conflicts_remain_intact() {
let dir = TempDir::new().expect("tempdir");
doiget(&dir)
.args(["--json", "--quiet", "capabilities"])
.assert()
.failure()
.code(2);
}
#[test]
fn color_flag_is_accepted_for_each_value() {
let dir = TempDir::new().expect("tempdir");
for value in ["auto", "always", "never"] {
doiget(&dir)
.args(["--color", value, "capabilities"])
.assert()
.success();
}
doiget(&dir)
.args(["--color", "rainbow", "capabilities"])
.assert()
.failure()
.code(2);
}
#[test]
fn progress_flag_accepted_with_capabilities() {
let dir = TempDir::new().expect("tempdir");
doiget(&dir)
.args(["--progress", "capabilities"])
.assert()
.success();
}
#[test]
fn no_progress_flag_accepted_with_capabilities() {
let dir = TempDir::new().expect("tempdir");
doiget(&dir)
.args(["--no-progress", "capabilities"])
.assert()
.success();
}
#[test]
fn store_root_empty_value_is_rejected_at_parse_time() {
let dir = TempDir::new().expect("tempdir");
doiget(&dir)
.args(["--store-root", "", "capabilities"])
.assert()
.failure()
.code(2);
}
#[test]
fn log_path_empty_value_is_rejected_at_parse_time() {
let dir = TempDir::new().expect("tempdir");
doiget(&dir)
.args(["--log-path", "", "capabilities"])
.assert()
.failure()
.code(2);
}