use anyhow::Result;
use assert_cmd::Command;
use tempfile::tempdir;
mod common;
use common::*;
#[test]
fn backup_src() -> Result<()> {
let project_dir = std::env::current_dir()?;
let backup_dir = tempdir()?;
let backup_path = backup_dir.path();
let working_dir = tempdir()?;
let working_path = working_dir.path();
cli_run(working_path, backup_path)?
.args(["init", "filesystem"])
.assert()
.success();
cli_run(working_path, backup_path)?
.arg("backup")
.arg(project_dir.join("src"))
.assert()
.success();
let snap_glob = backup_path.join("snapshots/*");
let index_glob = backup_path.join("indexes/*");
let setup_resume = || {
Command::new("sh")
.arg("-c")
.arg("rm -v ".to_owned() + &snap_glob.to_string_lossy())
.assert()
.success();
Command::new("sh")
.arg("-c")
.arg(
"mv -v ".to_owned()
+ &index_glob.to_string_lossy()
+ " "
+ &working_path.join("backpak-wip.index").to_string_lossy(),
)
.assert()
.success();
};
setup_resume();
cli_run(working_path, backup_path)?
.arg("backup")
.arg(project_dir.join("src"))
.assert()
.success()
.stderr(predicates::str::contains("deduped"));
setup_resume();
Command::new("sh")
.arg("-c")
.arg(
"mv -v ".to_owned()
+ &backup_path.join("packs/*").to_string_lossy()
+ " "
+ &working_path.to_string_lossy(),
)
.assert()
.success();
cli_run(working_path, backup_path)?
.arg("backup")
.arg(project_dir.join("src"))
.assert()
.success()
.stderr(predicates::str::contains("deduped"));
Ok(())
}