use std::path::PathBuf; use alt_controller_image::cli::{Cli, Command}; use clap::Parser; #[test] fn parses_plan_with_an_explicit_spec_path() { let cli = Cli::try_parse_from(["alt-controller-image", "plan", "--spec", "image.toml"]) .expect("plan command parses"); assert!(matches!( cli.command, Command::Plan { spec } if spec == PathBuf::from("image.toml") )); } #[test] fn parses_build_with_explicit_workspace_and_output_paths() { let cli = Cli::try_parse_from([ "alt-controller-image", "build", "--spec", "image.toml", "--workspace", "work", "--output", "out/image.tar", ]) .expect("build command parses"); assert!(matches!( cli.command, Command::Build { spec, workspace, output } if spec == PathBuf::from("image.toml") && workspace == PathBuf::from("work") && output == PathBuf::from("out/image.tar") )); } #[test] fn parses_inspect_with_an_explicit_artifact_path() { let cli = Cli::try_parse_from(["alt-controller-image", "inspect", "--artifact", "out/image.tar"]) .expect("inspect command parses"); assert!(matches!( cli.command, Command::Inspect { artifact } if artifact == PathBuf::from("out/image.tar") )); } #[test] fn parses_compare_with_explicit_artifact_paths() { let cli = Cli::try_parse_from([ "alt-controller-image", "compare", "--left", "legacy.tar", "--right", "native.tar", ]) .expect("compare command parses"); assert!(matches!( cli.command, Command::Compare { left, right } if left == PathBuf::from("legacy.tar") && right == PathBuf::from("native.tar") )); }