diff --git a/tests/integration/cli_tests.rs b/tests/integration/cli_tests.rs new file mode 100644 index 0000000..b49d7fe --- /dev/null +++ b/tests/integration/cli_tests.rs @@ -0,0 +1,105 @@ +use std::process::Command; + +#[test] +fn test_cli_version() { + let output = Command::new("cargo") + .args(["run", "--", "--version"]) + .current_dir("..") + .output() + .expect("Failed to run cargo"); + + assert!(output.status.success()); + let stdout = String::from_utf8_lossy(&output.stdout); + assert!(stdout.contains("dotmigrate")); +} + +#[test] +fn test_cli_help() { + let output = Command::new("cargo") + .args(["run", "--", "--help"]) + .current_dir("..") + .output() + .expect("Failed to run cargo"); + + assert!(output.status.success()); + let stdout = String::from_utf8_lossy(&output.stdout); + assert!(stdout.contains("USAGE:")); +} + +#[test] +fn test_cli_detect_command_exists() { + let output = Command::new("cargo") + .args(["run", "--", "detect", "--help"]) + .current_dir("..") + .output() + .expect("Failed to run cargo"); + + assert!(output.status.success()); + let stdout = String::from_utf8_lossy(&output.stdout); + assert!(stdout.contains("--output") || stdout.contains("--include-system")); +} + +#[test] +fn test_cli_backup_command_exists() { + let output = Command::new("cargo") + .args(["run", "--", "backup", "--help"]) + .current_dir("..") + .output() + .expect("Failed to run cargo"); + + assert!(output.status.success()); + let stdout = String::from_utf8_lossy(&output.stdout); + assert!(stdout.contains("--output") || stdout.contains("--backup-dir")); +} + +#[test] +fn test_cli_sync_command_exists() { + let output = Command::new("cargo") + .args(["run", "--", "sync", "--help"]) + .current_dir("..") + .output() + .expect("Failed to run cargo"); + + assert!(output.status.success()); + let stdout = String::from_utf8_lossy(&output.stdout); + assert!(stdout.contains("--remote") || stdout.contains("--branch")); +} + +#[test] +fn test_cli_merge_command_exists() { + let output = Command::new("cargo") + .args(["run", "--", "merge", "--help"]) + .current_dir("..") + .output() + .expect("Failed to run cargo"); + + assert!(output.status.success()); + let stdout = String::from_utf8_lossy(&output.stdout); + assert!(stdout.contains("--base") || stdout.contains("--local")); +} + +#[test] +fn test_cli_status_command_exists() { + let output = Command::new("cargo") + .args(["run", "--", "status", "--help"]) + .current_dir("..") + .output() + .expect("Failed to run cargo"); + + assert!(output.status.success()); + let stdout = String::from_utf8_lossy(&output.stdout); + assert!(stdout.contains("--detailed")); +} + +#[test] +fn test_cli_completions_command_exists() { + let output = Command::new("cargo") + .args(["run", "--", "completions", "--help"]) + .current_dir("..") + .output() + .expect("Failed to run cargo"); + + assert!(output.status.success()); + let stdout = String::from_utf8_lossy(&output.stdout); + assert!(stdout.contains("SHELL")); +}