Add windows tests for path/env handling

This commit is contained in:
Félix Saparelli 2021-07-22 00:40:05 +12:00
parent f88c30b854
commit 3485bd7e16
No known key found for this signature in database
GPG Key ID: B948C4BAE44FC474
1 changed files with 169 additions and 61 deletions

View File

@ -110,72 +110,180 @@ mod tests {
#[test]
#[cfg(unix)]
fn longest_common_path_should_return_correct_value() {
let single_path = vec![PathBuf::from("/tmp/random/")];
let single_result =
get_longest_common_path(&single_path).expect("failed to get longest common path");
assert_eq!(single_result, "/tmp/random/");
let common_paths = vec![
PathBuf::from("/tmp/logs/hi"),
PathBuf::from("/tmp/logs/bye"),
PathBuf::from("/tmp/logs/bye"),
PathBuf::from("/tmp/logs/fly"),
];
let common_result =
get_longest_common_path(&common_paths).expect("failed to get longest common path");
assert_eq!(common_result, "/tmp/logs");
let diverging_paths = vec![PathBuf::from("/tmp/logs/hi"), PathBuf::from("/var/logs/hi")];
let diverging_result =
get_longest_common_path(&diverging_paths).expect("failed to get longest common path");
assert_eq!(diverging_result, "/");
let uneven_paths = vec![
PathBuf::from("/tmp/logs/hi"),
PathBuf::from("/tmp/logs/"),
PathBuf::from("/tmp/logs/bye"),
];
let uneven_result =
get_longest_common_path(&uneven_paths).expect("failed to get longest common path");
assert_eq!(uneven_result, "/tmp/logs");
fn longest_common_path_single_unix() {
assert_eq!(
get_longest_common_path(&[PathBuf::from("/tmp/random/")])
.expect("failed to get longest common path"),
"/tmp/random/"
);
}
#[test]
#[cfg(unix)]
fn pathops_collect_to_env_vars() {
let pathops = vec![
PathOp::new(
&PathBuf::from("/tmp/logs/hi"),
Some(notify::op::CREATE),
None,
),
PathOp::new(
&PathBuf::from("/tmp/logs/hey/there"),
Some(notify::op::CREATE),
None,
),
PathOp::new(
&PathBuf::from("/tmp/logs/bye"),
Some(notify::op::REMOVE),
None,
),
];
let expected_vars = vec![
("WATCHEXEC_COMMON_PATH".to_string(), "/tmp/logs".to_string()),
("WATCHEXEC_REMOVED_PATH".to_string(), "/bye".to_string()),
(
"WATCHEXEC_CREATED_PATH".to_string(),
"/hi:/hey/there".to_string(),
),
];
let vars = collect_path_env_vars(&pathops);
fn longest_common_path_similar_unix() {
assert_eq!(
vars.iter().collect::<HashSet<_>>(),
expected_vars.iter().collect::<HashSet<_>>()
get_longest_common_path(&[
PathBuf::from("/tmp/logs/hi"),
PathBuf::from("/tmp/logs/bye"),
PathBuf::from("/tmp/logs/bye"),
PathBuf::from("/tmp/logs/fly"),
])
.expect("failed to get longest common path"),
"/tmp/logs"
);
}
#[test]
#[cfg(unix)]
fn longest_common_path_divergent_unix() {
assert_eq!(
get_longest_common_path(&[
PathBuf::from("/tmp/logs/hi"),
PathBuf::from("/var/logs/hi")
])
.expect("failed to get longest common path"),
"/"
);
}
#[test]
#[cfg(unix)]
fn longest_common_path_uneven_unix() {
assert_eq!(
get_longest_common_path(&[
PathBuf::from("/tmp/logs/hi"),
PathBuf::from("/tmp/logs/"),
PathBuf::from("/tmp/logs/bye"),
])
.expect("failed to get longest common path"),
"/tmp/logs"
);
}
#[test]
#[cfg(windows)]
fn longest_common_path_single_windows() {
assert_eq!(
get_longest_common_path(&[PathBuf::from(r"C:\Temp\Random\")])
.expect("failed to get longest common path"),
r"C:\Temp\Random\"
);
}
#[test]
#[cfg(windows)]
fn longest_common_path_similar_windows() {
assert_eq!(
get_longest_common_path(&[
PathBuf::from(r"C:\Temp\Logs\hi"),
PathBuf::from(r"C:\Temp\Logs\bye"),
PathBuf::from(r"C:\Temp\Logs\bye"),
PathBuf::from(r"C:\Temp\Logs\fly"),
])
.expect("failed to get longest common path"),
r"C:\Temp\Logs"
);
}
#[test]
#[cfg(windows)]
fn longest_common_path_divergent_windows() {
assert_eq!(
get_longest_common_path(&[
PathBuf::from(r"C:\Temp\Logs\hi"),
PathBuf::from(r"C:\Perm\Logs\hi")
])
.expect("failed to get longest common path"),
"C:/"
);
}
#[test]
#[cfg(windows)]
fn longest_common_path_uneven_windows() {
assert_eq!(
get_longest_common_path(&[
PathBuf::from(r"C:\Temp\Logs\hi"),
PathBuf::from(r"C:\Temp\Logs\"),
PathBuf::from(r"C:\Temp\Logs\bye"),
])
.expect("failed to get longest common path"),
r"C:\Temp\Logs"
);
}
#[test]
#[cfg(unix)]
fn pathops_collect_to_env_vars_unix() {
assert_eq!(
collect_path_env_vars(&[
PathOp::new(
&PathBuf::from("/tmp/logs/hi"),
Some(notify::op::CREATE),
None,
),
PathOp::new(
&PathBuf::from("/tmp/logs/hey/there"),
Some(notify::op::CREATE),
None,
),
PathOp::new(
&PathBuf::from("/tmp/logs/bye"),
Some(notify::op::REMOVE),
None,
),
])
.into_iter()
.collect::<HashSet<_>>(),
vec![
("WATCHEXEC_COMMON_PATH".to_string(), "/tmp/logs".to_string()),
("WATCHEXEC_REMOVED_PATH".to_string(), "/bye".to_string()),
(
"WATCHEXEC_CREATED_PATH".to_string(),
"/hi:/hey/there".to_string(),
),
]
.into_iter()
.collect::<HashSet<_>>()
);
}
#[test]
#[cfg(windows)]
fn pathops_collect_to_env_vars_windows() {
assert_eq!(
collect_path_env_vars(&[
PathOp::new(
&PathBuf::from(r"C:\Temp\Logs\hi"),
Some(notify::op::CREATE),
None,
),
PathOp::new(
&PathBuf::from(r"C:\Temp\Logs\hey\there"),
Some(notify::op::CREATE),
None,
),
PathOp::new(
&PathBuf::from(r"C:\Temp\Logs\bye"),
Some(notify::op::REMOVE),
None,
),
])
.into_iter()
.collect::<HashSet<_>>(),
vec![
(
"WATCHEXEC_COMMON_PATH".to_string(),
r"C:\Temp\Logs".to_string()
),
("WATCHEXEC_REMOVED_PATH".to_string(), r"\bye".to_string()),
(
"WATCHEXEC_CREATED_PATH".to_string(),
r"\hi;\hey\there".to_string(),
),
]
.into_iter()
.collect::<HashSet<_>>()
);
}
}