use super::machine_contract_test_support::{run_in_dir, setup_cueloop_repo, setup_git_repo};
use anyhow::Result;
use serde_json::Value;
#[test]
fn machine_system_info_reports_cli_version() -> Result<()> {
let dir = setup_git_repo()?;
let (status, stdout, stderr) = run_in_dir(dir.path(), &["machine", "system", "info"]);
assert!(
status.success(),
"machine system info failed\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
let document: Value = serde_json::from_str(&stdout)?;
assert_eq!(document["version"], 1);
assert!(document["cli_version"].as_str().is_some());
Ok(())
}
#[test]
fn machine_doctor_report_returns_versioned_blocking_document() -> Result<()> {
let dir = setup_cueloop_repo()?;
let (status, stdout, stderr) = run_in_dir(dir.path(), &["machine", "doctor", "report"]);
assert!(
status.success(),
"machine doctor report failed\nstdout:\n{stdout}\nstderr:\n{stderr}"
);
let document: Value = serde_json::from_str(&stdout)?;
assert_eq!(document["version"], 2);
assert!(document["blocking"].is_object());
assert_eq!(document["blocking"], document["report"]["blocking"]);
assert!(document["report"]["checks"].is_array());
Ok(())
}