use super::*;
use crate::service_timing::capture::entries_of;
#[test]
fn the_words_of_a_run_are_its_trimmed_streams_in_order() {
assert_eq!(words_of(b"Updating a..b\n", b"warning: x\n"), Some(String::from("Updating a..b\nwarning: x")));
assert_eq!(words_of(b"", b"From origin\n"), Some(String::from("From origin")));
assert_eq!(words_of(b" \n", b"\n\n"), None);
assert_eq!(words_of(b"", b""), None);
}
#[test]
fn the_service_keeps_the_words_in_one_ordinary_entry() {
let entries = entries_of(|| {
record_text(&["fetch", "--no-tags", "origin"], "From origin\n * branch main -> main\n");
record_text(&["fetch", "--no-tags", "origin"], " \n");
});
assert_eq!(entries.len(), 1, "{entries:?}");
assert_eq!(entries[0].priority, Priority::Info);
assert!(entries[0].message.contains("git fetch --no-tags origin said: From origin\n * branch main -> main"), "{:?}", entries[0]);
assert!(entries[0].fields.contains(&(String::from(COMMAND_FIELD), String::from("fetch --no-tags origin"))), "{:?}", entries[0]);
}
#[test]
fn credentials_in_the_words_are_masked() {
let entries = entries_of(|| {
record_text(&["fetch", "origin"], "From https://user:secret@example.invalid/repo\n");
});
assert_eq!(entries.len(), 1);
assert!(!entries[0].message.contains("secret"), "{:?}", entries[0]);
assert!(entries[0].message.contains("<credentials>"), "{:?}", entries[0]);
}