82ecd61f5c
Change-Id: I6c6847fac56f0a9a1a2209792e00a3aec5e672b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10809 Autosubmit: aspen <root@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi>
79 lines
1.7 KiB
Rust
79 lines
1.7 KiB
Rust
use std::process::Command;
|
|
|
|
use crate_root::root;
|
|
|
|
struct Fixture {
|
|
name: &'static str,
|
|
exit_code: i32,
|
|
expected_output: &'static str,
|
|
}
|
|
|
|
const FIXTURES: &[Fixture] = &[
|
|
Fixture {
|
|
name: "simple",
|
|
exit_code: 5,
|
|
expected_output: "",
|
|
},
|
|
Fixture {
|
|
name: "functions",
|
|
exit_code: 9,
|
|
expected_output: "",
|
|
},
|
|
Fixture {
|
|
name: "externs",
|
|
exit_code: 0,
|
|
expected_output: "foobar\n",
|
|
},
|
|
Fixture {
|
|
name: "units",
|
|
exit_code: 0,
|
|
expected_output: "hi\n",
|
|
},
|
|
];
|
|
|
|
#[test]
|
|
fn compile_and_run_files() {
|
|
let ach = root().unwrap().join("ach");
|
|
|
|
println!("Running: `make clean`");
|
|
assert!(
|
|
Command::new("make")
|
|
.arg("clean")
|
|
.current_dir(&ach)
|
|
.spawn()
|
|
.unwrap()
|
|
.wait()
|
|
.unwrap()
|
|
.success(),
|
|
"make clean failed"
|
|
);
|
|
|
|
for Fixture {
|
|
name,
|
|
exit_code,
|
|
expected_output,
|
|
} in FIXTURES
|
|
{
|
|
println!(">>> Testing: {}", name);
|
|
|
|
println!(" Running: `make {}`", name);
|
|
assert!(
|
|
Command::new("make")
|
|
.arg(name)
|
|
.current_dir(&ach)
|
|
.spawn()
|
|
.unwrap()
|
|
.wait()
|
|
.unwrap()
|
|
.success(),
|
|
"make failed"
|
|
);
|
|
|
|
let out_path = ach.join(name);
|
|
println!(" Running: `{}`", out_path.to_str().unwrap());
|
|
let output = Command::new(out_path).output().unwrap();
|
|
assert_eq!(output.status.code().unwrap(), *exit_code,);
|
|
assert_eq!(output.stdout, expected_output.as_bytes());
|
|
println!(" OK");
|
|
}
|
|
}
|