use assert_cmd::cargo;
use elaborate::std::{
env::var_wc,
process::{ChildContext, CommandContext},
};
use std::{
io::{Write, stderr},
process::{Command, Stdio},
};
#[test]
fn save_token() {
let Ok(github_token) = var_wc("GITHUB_TOKEN") else {
#[allow(clippy::explicit_write)]
writeln!(
stderr(),
"Skipping `save_token` test as `GITHUB_TOKEN` is unset"
)
.unwrap();
return;
};
#[cfg_attr(dylint_lib = "general", allow(unnecessary_conversion_for_trait))]
let mut command = Command::new(cargo::cargo_bin!("cargo-unmaintained"));
command.args(["unmaintained", "--save-token"]);
command.stdin(Stdio::piped());
let mut child = command.spawn_wc().unwrap();
let mut stdin = child.stdin.take().unwrap();
writeln!(stdin, "{github_token}").unwrap();
let exit_status = child.wait_wc().unwrap();
assert!(exit_status.success());
#[cfg_attr(dylint_lib = "general", allow(unnecessary_conversion_for_trait))]
let mut command = Command::new(cargo::cargo_bin!("cargo-unmaintained"));
command
.args(["unmaintained", "--color=never"])
.env_remove("GITHUB_TOKEN")
.current_dir("fixtures/archived");
let output = command.output_wc().unwrap();
let stdout = String::from_utf8(output.stdout).unwrap();
let stderr = String::from_utf8(output.stderr).unwrap();
assert_eq!(
stdout,
"adler (https://github.com/jonas-schievink/adler.git archived)\n"
);
assert_eq!(
stderr,
"Prefetching GitHub data for 1 repositories\nScanning 1 packages and their dependencies \
(pass --verbose for more information)\n"
);
}