mod common;
use std::process::Command;
#[test]
fn doctor_reports_database_path_resolution_details() {
let temp_dir = common::setup_test_env();
let binary_path = env!("CARGO_BIN_EXE_ie");
let output = Command::new(binary_path)
.current_dir(temp_dir.path())
.env("HOME", "/nonexistent") .env("USERPROFILE", "/nonexistent") .arg("doctor")
.output()
.expect("failed to run doctor command");
if !output.status.success() {
panic!(
"doctor command failed: status={:?}, stdout={}, stderr={}",
output.status,
String::from_utf8_lossy(&output.stdout),
String::from_utf8_lossy(&output.stderr)
);
}
let stdout = String::from_utf8(output.stdout).expect("doctor output should be utf-8");
assert!(
stdout.contains("Database:"),
"Should show database location"
);
assert!(
stdout.contains("project.db"),
"Should show project.db in output"
);
assert!(
stdout.contains("Ancestor directories with databases:"),
"Should show ancestor directories section"
);
assert!(
stdout.contains("Dashboard:"),
"Should show dashboard status"
);
let expected_db_path = temp_dir
.path()
.join(".intent-engine")
.join("project.db")
.display()
.to_string();
assert!(
stdout.contains(&expected_db_path),
"Should show the correct database path: {}",
expected_db_path
);
}