build_logger 0.1.0

A logger to be used in build scripts.
Documentation
use std::{path::Path, process::Command};

fn build<P>(path: P) -> Vec<String>
where
    P: AsRef<Path>,
{
    let output = Command::new("cargo")
        .args(["build"])
        .env("CARGO_TERM_COLOR", "never")
        .current_dir(path)
        .output()
        .expect("failed to build test crate");

    assert!(output.status.success(), "build failed");

    String::from_utf8(output.stderr)
        .expect("stderr did not contain valid UTF-8")
        .lines()
        .filter_map(|s| s.strip_prefix("warning: ").map(ToOwned::to_owned))
        .collect()
}

#[test]
fn trace() {
    let output = build("tests/trace");

    assert_eq!(
        output,
        vec!["trace@0.0.0: TRACE:build_script_build -- Hello, world!"]
    );
}

#[test]
fn debug() {
    let output = build("tests/debug");

    assert_eq!(
        output,
        vec!["debug@0.0.0: DEBUG:build_script_build -- Hello, world!"]
    );
}

#[test]
fn info() {
    let output = build("tests/info");

    assert_eq!(
        output,
        vec!["info@0.0.0: INFO:build_script_build -- Hello, world!"]
    );
}

#[test]
fn warn() {
    let output = build("tests/warn");

    assert_eq!(
        output,
        vec!["warn@0.0.0: WARN:build_script_build -- Hello, world!"]
    );
}

#[test]
fn error() {
    let output = build("tests/error");

    assert_eq!(
        output,
        vec!["error@0.0.0: ERROR:build_script_build -- Hello, world!"]
    );
}