use super::read_publishable_names;
fn read(text: &str) -> Vec<String> {
return read_publishable_names(text);
}
#[test]
fn reads_the_list_and_stops_at_the_first_non_item_line() {
assert_eq!(
read("a: 1\n packages:\n - '@s/a'\n - '@s/b'\n other: x\n - '@s/c'\n"),
["@s/a", "@s/b"]
);
assert_eq!(read("packages:\n - '@s/a'"), ["@s/a"]);
assert!(read("no list here\n").is_empty());
assert!(read("packages:\n - ''\n").is_empty());
}
#[test]
fn reads_items_after_the_first_key_only() {
assert!(read("packages:\n x\npackages:\n - 'a'\n").is_empty());
assert!(read("packages:\n - '\n").is_empty());
assert!(read("packages:\n - 'a\n").is_empty());
assert!(read("packages:\n - a'\n").is_empty());
assert_eq!(read("packages:\n - '''\n - 'a b'\n"), ["'", "a b"]);
assert!(read("packages: x\n - 'a'\n").is_empty());
}
#[test]
fn trims_as_javascript_does() {
assert_eq!(read("packages:\r\n - 'a'\r\n"), ["a"]);
assert_eq!(read("\u{feff}packages:\n\u{3000}- 'a'\u{a0}\n"), ["a"]);
assert_eq!(
read(
"packages:\n\u{b}\u{c}\u{1680}\u{2000}\u{200a}\u{2028}\u{2029}\u{202f}\u{205f}- 'a'\n"
),
["a"]
);
assert!(read("\u{85}packages:\n - 'a'\n").is_empty());
assert_eq!(read("packages:\n - 'a'\u{85}\n"), Vec::<String>::new());
}