You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.6 KiB
107 lines
2.6 KiB
use clap::Parser; |
|
use kvm_install_vm::{Cli, cli::Commands}; |
|
use std::ffi::OsString; |
|
|
|
fn get_args(args: &[&str]) -> Vec<OsString> { |
|
vec![OsString::from("kvm-install-vm")] |
|
.into_iter() |
|
.chain(args.iter().map(|s| OsString::from(s))) |
|
.collect() |
|
} |
|
|
|
#[test] |
|
fn test_cli_create_defaults() { |
|
let args = get_args(&["create", "--name", "test-vm"]); |
|
let cli = Cli::parse_from(args); |
|
|
|
match cli.command { |
|
Commands::Create { |
|
name, |
|
distro, |
|
vcpus, |
|
memory_mb, |
|
disk_size_gb, |
|
graphics, |
|
dry_run, |
|
} => { |
|
assert_eq!(name, "test-vm"); |
|
assert_eq!(distro, "centos8"); |
|
assert_eq!(vcpus, 1); |
|
assert_eq!(disk_size_gb, 10); |
|
assert_eq!(memory_mb, 1024); |
|
assert_eq!(graphics, false); |
|
assert_eq!(dry_run, false); |
|
} |
|
_ => panic!("Expected Create command"), |
|
} |
|
} |
|
|
|
#[test] |
|
fn test_cli_create_custom_values() { |
|
let args = get_args(&[ |
|
"create", |
|
"--name", |
|
"custom-vm", |
|
"--distro", |
|
"ubuntu2004", |
|
"--vcpus", |
|
"4", |
|
"--memory-mb", |
|
"4096", |
|
"--disk-size-gb", |
|
"50", |
|
"--graphics", |
|
"--dry-run", |
|
]); |
|
|
|
let cli = Cli::parse_from(args); |
|
|
|
match cli.command { |
|
Commands::Create { |
|
name, |
|
distro, |
|
vcpus, |
|
memory_mb, |
|
disk_size_gb, |
|
graphics, |
|
dry_run, |
|
} => { |
|
assert_eq!(name, "custom-vm"); |
|
assert_eq!(distro, "ubuntu2004"); |
|
assert_eq!(vcpus, 4); |
|
assert_eq!(disk_size_gb, 50); |
|
assert_eq!(memory_mb, 4096); |
|
assert_eq!(graphics, true); |
|
assert_eq!(dry_run, true); |
|
} |
|
_ => panic!("Expected Create command"), |
|
} |
|
} |
|
|
|
#[test] |
|
fn test_cli_destroy_defaults() { |
|
let args = get_args(&["destroy", "--name", "test-vm"]); |
|
let cli = Cli::parse_from(args); |
|
|
|
match cli.command { |
|
Commands::Destroy { name, remove_disk } => { |
|
assert_eq!(name, "test-vm"); |
|
assert_eq!(remove_disk, false); |
|
} |
|
_ => panic!("Expected Destroy command"), |
|
} |
|
} |
|
|
|
#[test] |
|
fn test_cli_destroy_with_disk_removal() { |
|
let args = get_args(&["destroy", "--name", "test-vm", "--remove-disk"]); |
|
let cli = Cli::parse_from(args); |
|
|
|
match cli.command { |
|
Commands::Destroy { name, remove_disk } => { |
|
assert_eq!(name, "test-vm"); |
|
assert_eq!(remove_disk, true); |
|
} |
|
_ => panic!("Expected Destroy command"), |
|
} |
|
}
|
|
|