scx_pandemonium/cli/
test_gate.rs1use std::process::Command;
2
3use anyhow::{bail, Result};
4
5use super::TARGET_DIR;
6
7pub fn run_test_gate() -> Result<()> {
8 let project_root = env!("CARGO_MANIFEST_DIR");
9
10 log_info!("PANDEMONIUM test gate");
11
12 log_info!("Layer 1: Rust unit tests");
14 let l1 = Command::new("cargo")
15 .args(["test", "--release"])
16 .env("CARGO_TARGET_DIR", TARGET_DIR)
17 .current_dir(project_root)
18 .status()?;
19
20 if !l1.success() {
21 bail!("LAYER 1 FAILED -- SKIPPING REMAINING LAYERS");
22 }
23
24 log_info!("Layers 2-5: integration (requires root)");
26 let l2 = Command::new("sudo")
27 .args([
28 "-E",
29 &format!("CARGO_TARGET_DIR={}", TARGET_DIR),
30 "cargo",
31 "test",
32 "--test",
33 "gate",
34 "--release",
35 "--",
36 "--ignored",
37 "--test-threads=1",
38 "full_gate",
39 ])
40 .env("CARGO_TARGET_DIR", TARGET_DIR)
41 .current_dir(project_root)
42 .status()?;
43
44 if !l2.success() {
45 std::process::exit(l2.code().unwrap_or(1));
46 }
47
48 Ok(())
49}