pub mod helpers;
pub mod test_additional_commands;
pub mod test_analyze_commands;
pub mod test_main_commands;
pub use helpers::cli_test_runner::{CliTestRunner, OutputFormat, TestValidators};
#[cfg(test)]
mod integration_tests {
use super::*;
use anyhow::Result;
#[tokio::test]
async fn test_cli_acceptance_framework() -> Result<()> {
let runner = CliTestRunner::new()?;
let project_path = runner.create_sample_project()?;
assert!(project_path.exists());
assert!(project_path.join("Cargo.toml").exists());
assert!(project_path.join("src/main.rs").exists());
assert!(project_path.join("src/lib.rs").exists());
let result = runner.run_success(["--version"])?;
assert!(result.exit_code == 0);
assert!(result.stdout_text.contains("pmat"));
Ok(())
}
#[test]
fn test_cli_coverage_completeness() {
let covered_main_commands = vec![
"version",
"help",
"generate",
"scaffold",
"list",
"search",
"validate",
"diagnose",
"context",
"demo",
"serve",
"refactor",
"quality-gate",
"report",
"enforce",
"roadmap",
"test",
"memory",
"cache",
"telemetry",
"config",
"agent",
"tdg",
"qdd",
"mcp",
"pdmt-todos",
];
let covered_analyze_commands = vec![
"complexity",
"dead-code",
"satd",
"deep-context",
"tdg",
"entropy",
"duplicates",
"lint-hotspot",
"big-o",
"defect-prediction",
"ml-analysis",
"dependencies",
"graph-metrics",
"name-similarity",
"symbol-table",
"comprehensive",
"wasm",
];
assert!(
covered_main_commands.len() >= 25,
"Should cover at least 25 main commands, found {}",
covered_main_commands.len()
);
assert!(
covered_analyze_commands.len() >= 17,
"Should cover at least 17 analyze commands, found {}",
covered_analyze_commands.len()
);
}
}