use std::{thread::sleep, time::Duration};
use assert_cmd::cargo::cargo_bin_cmd;
use color_eyre::Result;
use predicates::str::contains;
#[test]
fn ps_command() -> Result<()> {
cargo_bin_cmd!()
.arg("ps")
.assert()
.success()
.stdout(contains("VM ID"));
Ok(())
}
#[test]
fn exec_command() -> Result<()> {
let detached_run_output = cargo_bin_cmd!()
.arg("run")
.arg("archlinux")
.arg("--detach")
.arg("--disable-kvm")
.args(["--ssh-timeout", "500"])
.args(["sleep", "500"])
.assert()
.success()
.get_output()
.stdout
.clone();
let detached_run_output_str = String::from_utf8(detached_run_output)?;
let detached_vm_id = detached_run_output_str.lines().last().unwrap();
sleep(Duration::from_secs(10));
cargo_bin_cmd!()
.arg("exec")
.arg(detached_vm_id)
.args(["echo", "test in running vm"])
.assert()
.success()
.stdout(contains("test in running vm"));
cargo_bin_cmd!()
.arg("stop")
.arg(detached_vm_id)
.assert()
.success();
Ok(())
}
#[test]
fn run_command() -> Result<()> {
cargo_bin_cmd!()
.arg("run")
.arg("archlinux")
.arg("--disable-kvm")
.args(["--ssh-timeout", "500"])
.args(["echo", "hello yes"])
.assert()
.success()
.stdout(contains("hello yes"));
Ok(())
}