cargo-unmaintained 2.0.2

Find unmaintained packages in Rust projects
Documentation
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))]
    // smoelius: `cargo_bin_cmd!` returns `assert_cmd::Command`, which could not be used here.
    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"
    );
}