use std::process::Command;
use assert_cmd::prelude::*;
fn snapdir_clean_env() -> Command {
let mut cmd = Command::cargo_bin("snapdir").expect("snapdir binary built");
cmd.env_clear();
if let Ok(path) = std::env::var("PATH") {
cmd.env("PATH", path);
}
cmd
}
#[test]
fn ratelimit_defaults_lists_new_env_vars() {
let mut cmd = snapdir_clean_env();
cmd.env("SNAPDIR_MAX_REQUESTS", "3")
.env("SNAPDIR_MAX_RETRIES", "7")
.env("SNAPDIR_RETRY_BASE_MS", "100")
.env("SNAPDIR_RETRY_MAX_MS", "9000");
let out = cmd.arg("defaults").output().expect("run snapdir defaults");
assert!(
out.status.success(),
"snapdir defaults failed ({:?})\nstderr: {}",
out.status.code(),
String::from_utf8_lossy(&out.stderr),
);
let stdout = String::from_utf8(out.stdout).expect("utf8 stdout");
let lines: Vec<&str> = stdout.lines().collect();
for expected in [
"--max-requests=3",
"--max-retries=7",
"--retry-base-ms=100",
"--retry-max-ms=9000",
] {
assert!(
lines.contains(&expected),
"expected {expected} in `snapdir defaults`:\n{stdout}",
);
}
}