use assert_cmd::prelude::*; //use assert_fs::prelude::*; //use predicates::prelude::*; use std::fs; use std::io::Write; use std::path::Path; use std::process::Command; fn empty_dir() -> Result { let dir = assert_fs::TempDir::new()?; Ok(dir) } fn init_dir(dir: &Path) -> Result<(), assert_cmd::cargo::CargoError> { let mut cmd = Command::cargo_bin("nancy")?; cmd.arg("init") .arg("--name") .arg("Temporary data directory") .arg(dir) .assert() .success(); Ok(()) } fn add_some_files(dir: &Path) -> Result<(), Box> { let subdir = dir.join("foo").join("bar"); let bazpath = subdir.join("baz.txt"); fs::create_dir_all(subdir)?; let mut bazfile = fs::File::create(bazpath)?; write!(bazfile, "{}", "bat",)?; Ok(()) } #[test] fn init_missing_dir() -> Result<(), Box> { let mut cmd = Command::cargo_bin("nancy")?; cmd.arg("init") .arg("--name") .arg("Missing data directory") .arg("/path/to/missing/dir") .assert() .failure(); Ok(()) } #[test] fn init_empty_dir() -> Result<(), Box> { let dir = empty_dir()?; init_dir(dir.path())?; Ok(()) } fn record_dir(dir: &Path) -> Result { let mut cmd = Command::cargo_bin("nancy")?; Ok(cmd .arg("record") .arg("--message") .arg("Test recording") .arg(dir) .assert() .success()) } #[test] fn record_empty_dir() -> Result<(), Box> { let d = empty_dir()?; let path = d.path(); init_dir(path)?; record_dir(path)?; Ok(()) } #[test] fn re_record_with_files() -> Result<(), Box> { let d = empty_dir()?; let path = d.path(); init_dir(path)?; record_dir(path)?; add_some_files(path)?; record_dir(path)?; Ok(()) }