mirror of
https://github.com/watchexec/watchexec.git
synced 2024-09-29 22:51:33 +02:00
Add windows tests for path/env handling
This commit is contained in:
parent
f88c30b854
commit
3485bd7e16
188
lib/src/paths.rs
188
lib/src/paths.rs
@ -110,44 +110,113 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
fn longest_common_path_should_return_correct_value() {
|
fn longest_common_path_single_unix() {
|
||||||
let single_path = vec![PathBuf::from("/tmp/random/")];
|
assert_eq!(
|
||||||
let single_result =
|
get_longest_common_path(&[PathBuf::from("/tmp/random/")])
|
||||||
get_longest_common_path(&single_path).expect("failed to get longest common path");
|
.expect("failed to get longest common path"),
|
||||||
assert_eq!(single_result, "/tmp/random/");
|
"/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");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
fn pathops_collect_to_env_vars() {
|
fn longest_common_path_similar_unix() {
|
||||||
let pathops = vec![
|
assert_eq!(
|
||||||
|
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(
|
PathOp::new(
|
||||||
&PathBuf::from("/tmp/logs/hi"),
|
&PathBuf::from("/tmp/logs/hi"),
|
||||||
Some(notify::op::CREATE),
|
Some(notify::op::CREATE),
|
||||||
@ -163,19 +232,58 @@ mod tests {
|
|||||||
Some(notify::op::REMOVE),
|
Some(notify::op::REMOVE),
|
||||||
None,
|
None,
|
||||||
),
|
),
|
||||||
];
|
])
|
||||||
let expected_vars = vec![
|
.into_iter()
|
||||||
|
.collect::<HashSet<_>>(),
|
||||||
|
vec![
|
||||||
("WATCHEXEC_COMMON_PATH".to_string(), "/tmp/logs".to_string()),
|
("WATCHEXEC_COMMON_PATH".to_string(), "/tmp/logs".to_string()),
|
||||||
("WATCHEXEC_REMOVED_PATH".to_string(), "/bye".to_string()),
|
("WATCHEXEC_REMOVED_PATH".to_string(), "/bye".to_string()),
|
||||||
(
|
(
|
||||||
"WATCHEXEC_CREATED_PATH".to_string(),
|
"WATCHEXEC_CREATED_PATH".to_string(),
|
||||||
"/hi:/hey/there".to_string(),
|
"/hi:/hey/there".to_string(),
|
||||||
),
|
),
|
||||||
];
|
]
|
||||||
let vars = collect_path_env_vars(&pathops);
|
.into_iter()
|
||||||
|
.collect::<HashSet<_>>()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(windows)]
|
||||||
|
fn pathops_collect_to_env_vars_windows() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
vars.iter().collect::<HashSet<_>>(),
|
collect_path_env_vars(&[
|
||||||
expected_vars.iter().collect::<HashSet<_>>()
|
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<_>>()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user