96 lines
2.0 KiB
Rust
96 lines
2.0 KiB
Rust
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<assert_fs::TempDir, assert_fs::fixture::FixtureError> {
|
|
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<dyn std::error::Error>> {
|
|
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<dyn std::error::Error>> {
|
|
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<dyn std::error::Error>> {
|
|
let dir = empty_dir()?;
|
|
|
|
init_dir(dir.path())?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
fn record_dir(dir: &Path) -> Result<assert_cmd::assert::Assert, assert_cmd::cargo::CargoError> {
|
|
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<dyn std::error::Error>> {
|
|
let d = empty_dir()?;
|
|
let path = d.path();
|
|
|
|
init_dir(path)?;
|
|
record_dir(path)?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn re_record_with_files() -> Result<(), Box<dyn std::error::Error>> {
|
|
let d = empty_dir()?;
|
|
let path = d.path();
|
|
|
|
init_dir(path)?;
|
|
record_dir(path)?;
|
|
|
|
add_some_files(path)?;
|
|
|
|
record_dir(path)?;
|
|
|
|
Ok(())
|
|
}
|