mirror of
https://git.proxmox.com/git/rustc
synced 2025-11-07 03:18:24 +00:00
80 lines
2.6 KiB
Rust
80 lines
2.6 KiB
Rust
use assert_cmd::prelude::*;
|
|
|
|
use std::process::Command;
|
|
|
|
// Timings are flaky, so tests would spuriously fail.
|
|
// Thus we replace all `/([0-9]+)ms/` with underscores
|
|
fn replace_ms(data: &[u8]) -> Vec<u8> {
|
|
let mut skip = false;
|
|
let mut seen_s = false;
|
|
let mut v: Vec<u8> = data
|
|
.iter()
|
|
.rev()
|
|
.filter_map(|&b| match (b, skip, seen_s) {
|
|
(b'0'..=b'9', true, _) => None,
|
|
(_, true, _) => {
|
|
skip = false;
|
|
Some(b)
|
|
}
|
|
(b's', _, _) => {
|
|
seen_s = true;
|
|
Some(b)
|
|
}
|
|
(b'm', _, true) => {
|
|
seen_s = false;
|
|
skip = true;
|
|
Some(b)
|
|
}
|
|
_ => Some(b),
|
|
})
|
|
.collect();
|
|
v.reverse();
|
|
v
|
|
}
|
|
|
|
fn main() {
|
|
for entry in glob::glob("examples/*.rs").expect("Failed to read glob pattern") {
|
|
let entry = entry.unwrap();
|
|
let mut cmd = Command::cargo_bin(entry.with_extension("").to_str().unwrap()).unwrap();
|
|
let output = cmd.unwrap();
|
|
let stderr = entry.with_extension("stderr");
|
|
let stdout = entry.with_extension("stdout");
|
|
|
|
if std::env::args().any(|arg| arg == "--bless") {
|
|
if output.stderr.is_empty() {
|
|
let _ = std::fs::remove_file(stderr);
|
|
} else {
|
|
std::fs::write(stderr, replace_ms(&output.stderr)).unwrap();
|
|
}
|
|
if output.stdout.is_empty() {
|
|
let _ = std::fs::remove_file(stdout);
|
|
} else {
|
|
std::fs::write(stdout, replace_ms(&output.stdout)).unwrap();
|
|
}
|
|
} else {
|
|
if output.stderr.is_empty() {
|
|
assert!(
|
|
!stderr.exists(),
|
|
"{} exists but there was no stderr output",
|
|
stderr.display()
|
|
);
|
|
} else {
|
|
assert!(
|
|
std::fs::read(&stderr).unwrap() == replace_ms(&output.stderr),
|
|
"{} is not the expected output, rerun the test with `cargo test -- -- --bless`",
|
|
stderr.display()
|
|
);
|
|
}
|
|
if output.stdout.is_empty() {
|
|
assert!(!stdout.exists());
|
|
} else {
|
|
assert!(
|
|
std::fs::read(&stdout).unwrap() == replace_ms(&output.stdout),
|
|
"{} is not the expected output, rerun the test with `cargo test -- -- --bless`",
|
|
stdout.display()
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|