datu 0.3.4

datu - a data file utility
Documentation
use tempfile::TempDir;

pub const TEMPDIR_PLACEHOLDER: &str = "$TEMPDIR";

pub fn replace_tempdir(s: &str, temp_path: &str) -> String {
    s.replace(TEMPDIR_PLACEHOLDER, temp_path)
}

pub fn assert_output_contains(
    output: &std::process::Output,
    expected: &str,
    temp_dir: Option<&TempDir>,
) {
    let stdout = String::from_utf8_lossy(&output.stdout);
    let stderr = String::from_utf8_lossy(&output.stderr);
    let combined = format!("{}{}", stdout, stderr);

    let expected_resolved = if let Some(temp_dir) = temp_dir {
        let temp_path = temp_dir
            .path()
            .to_str()
            .expect("Temp path is not valid UTF-8");
        replace_tempdir(expected, temp_path)
    } else {
        expected.to_string()
    };

    assert!(
        combined.contains(&expected_resolved),
        "Expected output to contain '{}', but got:\nstdout: {}\nstderr: {}",
        expected_resolved,
        stdout,
        stderr
    );
}