Add multipaths tests
This commit is contained in:
parent
e9275702d1
commit
89fd99a683
|
@ -9,6 +9,11 @@ use watchexec::{
|
|||
paths::summarise_events_to_env,
|
||||
};
|
||||
|
||||
#[cfg(unix)]
|
||||
const ENV_SEP: &str = ":";
|
||||
#[cfg(not(unix))]
|
||||
const ENV_SEP: &str = ";";
|
||||
|
||||
fn ospath(path: &str) -> OsString {
|
||||
let root = dunce::canonicalize(".").unwrap();
|
||||
if path.is_empty() {
|
||||
|
@ -120,3 +125,112 @@ fn single_otherwise() {
|
|||
])
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn all_types_once() {
|
||||
let events = vec![
|
||||
event("create.txt", FileEventKind::Create(CreateKind::File)),
|
||||
event(
|
||||
"metadata.txt",
|
||||
FileEventKind::Modify(ModifyKind::Metadata(MetadataKind::Any)),
|
||||
),
|
||||
event("remove.txt", FileEventKind::Remove(RemoveKind::File)),
|
||||
event(
|
||||
"rename.txt",
|
||||
FileEventKind::Modify(ModifyKind::Name(RenameMode::Any)),
|
||||
),
|
||||
event(
|
||||
"modify.txt",
|
||||
FileEventKind::Modify(ModifyKind::Data(DataChange::Any)),
|
||||
),
|
||||
event("any.txt", FileEventKind::Any),
|
||||
];
|
||||
assert_eq!(
|
||||
summarise_events_to_env(&events),
|
||||
HashMap::from([
|
||||
(OsStr::new("CREATED"), OsString::from("create.txt")),
|
||||
(OsStr::new("META_CHANGED"), OsString::from("metadata.txt")),
|
||||
(OsStr::new("REMOVED"), OsString::from("remove.txt")),
|
||||
(OsStr::new("RENAMED"), OsString::from("rename.txt")),
|
||||
(OsStr::new("WRITTEN"), OsString::from("modify.txt")),
|
||||
(OsStr::new("OTHERWISE_CHANGED"), OsString::from("any.txt")),
|
||||
(OsStr::new("COMMON_PATH"), ospath("")),
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn single_type_multipath() {
|
||||
let events = vec![
|
||||
event("root.txt", FileEventKind::Create(CreateKind::File)),
|
||||
event("sub/folder.txt", FileEventKind::Create(CreateKind::File)),
|
||||
event("dom/folder.txt", FileEventKind::Create(CreateKind::File)),
|
||||
event(
|
||||
"deeper/sub/folder.txt",
|
||||
FileEventKind::Create(CreateKind::File),
|
||||
),
|
||||
];
|
||||
assert_eq!(
|
||||
summarise_events_to_env(&events),
|
||||
HashMap::from([
|
||||
(
|
||||
OsStr::new("CREATED"),
|
||||
OsString::from(
|
||||
"".to_string()
|
||||
+ "root.txt" + ENV_SEP + "sub/folder.txt"
|
||||
+ ENV_SEP + "dom/folder.txt"
|
||||
+ ENV_SEP + "deeper/sub/folder.txt"
|
||||
)
|
||||
),
|
||||
(OsStr::new("COMMON_PATH"), ospath("")),
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn single_type_divergent_paths() {
|
||||
let events = vec![
|
||||
event("sub/folder.txt", FileEventKind::Create(CreateKind::File)),
|
||||
event("dom/folder.txt", FileEventKind::Create(CreateKind::File)),
|
||||
];
|
||||
assert_eq!(
|
||||
summarise_events_to_env(&events),
|
||||
HashMap::from([
|
||||
(
|
||||
OsStr::new("CREATED"),
|
||||
OsString::from("".to_string() + "sub/folder.txt" + ENV_SEP + "dom/folder.txt")
|
||||
),
|
||||
(OsStr::new("COMMON_PATH"), ospath("")),
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn multitype_multipath() {
|
||||
let events = vec![
|
||||
event("root.txt", FileEventKind::Create(CreateKind::File)),
|
||||
event("sibling.txt", FileEventKind::Create(CreateKind::Any)),
|
||||
event(
|
||||
"sub/folder.txt",
|
||||
FileEventKind::Modify(ModifyKind::Metadata(MetadataKind::Ownership)),
|
||||
),
|
||||
event("dom/folder.txt", FileEventKind::Remove(RemoveKind::Folder)),
|
||||
event("deeper/sub/folder.txt", FileEventKind::Other),
|
||||
];
|
||||
assert_eq!(
|
||||
summarise_events_to_env(&events),
|
||||
HashMap::from([
|
||||
(
|
||||
OsStr::new("CREATED"),
|
||||
OsString::from("".to_string() + "root.txt" + ENV_SEP + "sibling.txt"),
|
||||
),
|
||||
(OsStr::new("META_CHANGED"), OsString::from("sub/folder.txt"),),
|
||||
(OsStr::new("REMOVED"), OsString::from("dom/folder.txt"),),
|
||||
(
|
||||
OsStr::new("OTHERWISE_CHANGED"),
|
||||
OsString::from("deeper/sub/folder.txt"),
|
||||
),
|
||||
(OsStr::new("COMMON_PATH"), ospath("")),
|
||||
])
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue