use cydonia::agent::path::{merge, parse};
#[test]
fn the_path_comes_out_of_an_env_dump() {
let dump = "SHELL=/bin/zsh\nPATH=/opt/homebrew/bin:/usr/bin\nHOME=/Users/x\n";
assert_eq!(parse(dump), Some("/opt/homebrew/bin:/usr/bin"));
}
#[test]
fn a_banner_ahead_of_the_dump_does_not_win() {
let dump = "welcome back\nPATH=/nonsense\nSHELL=/bin/zsh\nPATH=/opt/homebrew/bin\n";
assert_eq!(parse(dump), Some("/opt/homebrew/bin"));
}
#[test]
fn nothing_that_names_a_path_is_no_answer() {
assert_eq!(parse(""), None);
assert_eq!(parse("HOME=/Users/x\nMANPATH=/usr/share/man\n"), None);
}
#[test]
fn the_shell_leads_and_the_inherited_path_follows() {
assert_eq!(
merge("/opt/homebrew/bin:/usr/bin:/bin", "/usr/bin:/bin:/usr/sbin"),
"/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin"
);
}
#[test]
fn an_inherited_entry_the_shell_lacks_is_kept() {
assert_eq!(
merge("/usr/bin", "/usr/bin:/tmp/fake-toolchain"),
"/usr/bin:/tmp/fake-toolchain"
);
}
#[test]
fn empty_entries_are_dropped() {
assert_eq!(merge("/usr/bin::/bin", ""), "/usr/bin:/bin");
assert_eq!(merge("", "/usr/bin"), "/usr/bin");
}