linuxutils-misc 0.1.0

Miscellaneous utilities from linuxutils
Documentation
use assert_cmd::Command;
use predicates::prelude::*;

fn cmd() -> Command {
    Command::cargo_bin("mcookie").unwrap()
}

#[test]
fn output_is_32_hex_chars_plus_newline() {
    let output = cmd().output().unwrap();
    assert!(output.status.success());
    let stdout = String::from_utf8(output.stdout).unwrap();
    let trimmed = stdout.trim_end_matches('\n');
    assert_eq!(trimmed.len(), 32);
    assert!(trimmed.chars().all(|c| c.is_ascii_hexdigit()));
}

#[test]
fn output_is_lowercase_hex() {
    let output = cmd().output().unwrap();
    let stdout = String::from_utf8(output.stdout).unwrap();
    let trimmed = stdout.trim_end_matches('\n');
    assert!(
        trimmed
            .chars()
            .all(|c| c.is_ascii_digit() || ('a'..='f').contains(&c))
    );
}

#[test]
fn two_invocations_produce_different_output() {
    let out1 = cmd().output().unwrap();
    let out2 = cmd().output().unwrap();
    assert_ne!(out1.stdout, out2.stdout);
}

#[test]
fn verbose_flag_prints_to_stderr() {
    cmd()
        .arg("-v")
        .assert()
        .success()
        .stderr(predicate::str::contains("Got 16 bytes from getrandom"));
}