use crate::utils::setup;
use assert_cmd::cargo::cargo_bin_cmd;
use std::fs;
fn create_archive(dir: &str, timestamp_flag: &str) {
let _ = fs::remove_dir_all(dir);
fs::create_dir_all(dir).unwrap();
fs::write(format!("{dir}/file.txt"), "content").unwrap();
let mut cmd = cargo_bin_cmd!("pna");
cmd.args([
"--quiet",
"c",
"-f",
&format!("{dir}/archive.pna"),
"--overwrite",
&format!("{dir}/file.txt"),
timestamp_flag,
])
.assert()
.success();
}
#[test]
fn list_missing_time_exclude_hides_entry() {
setup();
create_archive("list_missing_time_exclude", "--no-keep-timestamp");
let mut cmd = cargo_bin_cmd!("pna");
cmd.args([
"list",
"-f",
"list_missing_time_exclude/archive.pna",
"--unstable",
"--newer-mtime",
"@1000000000",
"--missing-time",
"exclude",
])
.assert()
.success()
.stdout("");
}
#[test]
fn list_missing_time_default_shows_entry() {
setup();
create_archive("list_missing_time_default", "--no-keep-timestamp");
let mut cmd = cargo_bin_cmd!("pna");
cmd.args([
"list",
"-f",
"list_missing_time_default/archive.pna",
"--unstable",
"--newer-mtime",
"@1000000000",
])
.assert()
.success()
.stdout("list_missing_time_default/file.txt\n");
}
#[test]
fn list_missing_time_assume_epoch_hides_with_newer_filter() {
setup();
create_archive("list_missing_time_epoch_newer", "--no-keep-timestamp");
let mut cmd = cargo_bin_cmd!("pna");
cmd.args([
"list",
"-f",
"list_missing_time_epoch_newer/archive.pna",
"--unstable",
"--newer-mtime",
"@1000000000",
"--missing-time",
"epoch",
])
.assert()
.success()
.stdout("");
}
#[test]
fn list_missing_time_assume_epoch_shows_with_older_filter() {
setup();
create_archive("list_missing_time_epoch_older", "--no-keep-timestamp");
let mut cmd = cargo_bin_cmd!("pna");
cmd.args([
"list",
"-f",
"list_missing_time_epoch_older/archive.pna",
"--unstable",
"--older-mtime",
"@1000000000",
"--missing-time",
"epoch",
])
.assert()
.success()
.stdout("list_missing_time_epoch_older/file.txt\n");
}
#[test]
fn list_missing_time_requires_time_filter() {
setup();
let mut cmd = cargo_bin_cmd!("pna");
cmd.args([
"list",
"-f",
"archive.pna",
"--unstable",
"--missing-time",
"exclude",
])
.assert()
.failure();
}
#[test]
fn list_missing_time_accepts_ctime_filter() {
setup();
create_archive("list_missing_time_ctime", "--no-keep-timestamp");
let mut cmd = cargo_bin_cmd!("pna");
cmd.args([
"list",
"-f",
"list_missing_time_ctime/archive.pna",
"--unstable",
"--newer-ctime",
"@1000000000",
"--missing-time",
"exclude",
])
.assert()
.success()
.stdout("");
}
#[test]
fn list_missing_time_exclude_ignores_unbounded_ctime_filter() {
setup();
create_archive("list_missing_time_unbounded", "--keep-timestamp");
let mut cmd = cargo_bin_cmd!("pna");
cmd.args([
"list",
"-f",
"list_missing_time_unbounded/archive.pna",
"--unstable",
"--newer-mtime",
"@1000000000",
"--missing-time",
"exclude",
])
.assert()
.success()
.stdout("list_missing_time_unbounded/file.txt\n");
}