//! doctor report: structure and config/state checks. mod common; use agent_manager::doctor; use agent_manager::runner::SystemRunner; #[test] fn report_contains_core_checks() { let app = common::test_app("doctor", &["doctor"]); let runner = SystemRunner::new(false, false, &app.log); let report = doctor::run(&app, &runner); let names: Vec<&str> = report.checks.iter().map(|c| c.name.as_str()).collect(); for expected in ["git", "config", "config-schema", "state", "install-dir", "bin-on-path"] { assert!( names.contains(&expected), "missing check '{expected}' in {names:?}" ); } // With our isolated test config the schema must be valid. let schema = report .checks .iter() .find(|c| c.name == "config-schema") .unwrap(); assert_eq!(schema.status, doctor::Status::Ok); } #[test] fn fix_creates_directories() { let app = common::test_app("doctorfix", &["doctor"]); assert!(!app.paths.install_dir.exists()); let repaired = doctor::fix(&app).unwrap(); assert!(repaired.len() >= 2); assert!(app.paths.install_dir.is_dir()); assert!(app.paths.log_dir.is_dir()); }