use std::path::PathBuf;
use magi::config::Config;
use magi::run::RunState;
fn main() {
let tmp = std::env::temp_dir().join(format!("magi-smoke-{}", std::process::id()));
magi::run::set_home(tmp.clone());
assert_eq!(magi::run::runs_root(), tmp.join("runs"));
let starter = tmp.join("magi.toml");
std::fs::create_dir_all(&tmp).expect("create smoke dir");
std::fs::write(&starter, Config::starter_toml()).expect("write starter config");
let cfg = Config::load(&starter).expect("starter config must load");
assert_eq!(cfg.graph.candidates, 3);
let mut state = RunState::new(
PathBuf::from("."),
"main".to_owned(),
"0000000000000000000000000000000000000000".to_owned(),
"smoke".to_owned(),
cfg,
);
state.event("smoke", "release smoke target");
state.save().expect("save run state");
let back = RunState::load(&state.id).expect("load run state");
assert_eq!(back.id, state.id);
assert_eq!(back.instruction, "smoke");
assert_eq!(back.events.len(), 1);
assert!(!magi::run::list_ids().is_empty());
magi::report::set_color(false);
let rendered = magi::report::run(&back);
assert!(rendered.contains(&state.id));
assert!(magi::report::stats(&magi::stats::collect(&[back])).contains("1 total"));
std::fs::remove_dir_all(&tmp).ok();
eprintln!("smoke: ok");
}