use std::process::Command;
use which::which;
#[test]
fn run_test_project() {
let cargo = which("cargo").expect("cargo not found in PATH");
let output = Command::new(cargo)
.arg("run")
.current_dir(concat!(env!("CARGO_MANIFEST_DIR"), "/tests/test_project"))
.output()
.expect("Failed to execute test project");
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(
output.status.success(),
"Test project failed to run:\n--- stdout\n{}\n--- stderr\n{}",
String::from_utf8_lossy(&output.stdout),
stderr
);
let stdout = String::from_utf8(output.stdout).expect("non UTF-8 output from test project");
assert!(
stdout.contains("Contents of file.txt"),
"stdout did not contain expected content: {stdout}"
);
assert!(
stdout.contains("Decompressed data matches original."),
"stdout did not contain success message: {stdout}"
);
}