diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-10-27 10:31:24 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-10-27 14:06:50 +0100 |
commit | 12a62951585c9d23e28a5520c57e422c2f45ab2a (patch) | |
tree | bdb17f1240fc00e866d96f858faec9c2a67f5b96 /src/log | |
parent | a9fb2644cac1a4fe8cd75df3ed8b5f9182cb8238 (diff) |
Add multiline string test
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/log')
-rw-r--r-- | src/log/parser.rs | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/log/parser.rs b/src/log/parser.rs index 01ecea5..22ded80 100644 --- a/src/log/parser.rs +++ b/src/log/parser.rs @@ -132,5 +132,110 @@ mod tests { let r = r.unwrap(); assert_eq!(r, LogItem::Line("#BUTIDO:PROGRESS:-1".bytes().collect())); } + + #[test] + fn test_phase() { + let s = "#BUTIDO:PHASE:\"a\""; + let p = parser(); + let r = p.parse(s.as_bytes()); + + assert!(r.is_ok(), "Not ok: {:?}", r); + let r = r.unwrap(); + assert_eq!(r, LogItem::CurrentPhase(String::from("a")), "Expected CurrentPhase(a), got: {}", prettify_item(&r)); + } + + #[test] + fn test_phase_multiline() { + let s = "#BUTIDO:PHASE:\"a + + \""; + let p = parser(); + let r = p.parse(s.as_bytes()); + + assert!(r.is_ok(), "Not ok: {:?}", r); + let r = r.unwrap(); + assert_eq!(r, LogItem::CurrentPhase(String::from("a\n\n ")), "Expected CurrentPhase(a), got: {}", prettify_item(&r)); + } + + #[test] + fn test_multiline() { + let buffer: &'static str = indoc::indoc! {" + #BUTIDO:PROGRESS:0 + Some log line + #BUTIDO:PHASE:\"configure\" + Some log line + Some log line + Some log line + #BUTIDO:PHASE:\"Build\" + Some other log line + Some other log line + Some other log line + #BUTIDO:STATE:OK:\"finished successfully\" + "}; + + let p = parser(); + + let res = buffer + .lines() + .map(|line| p.parse(line.as_bytes()).map_err(Error::from)) + .collect::<Result<Vec<_>>>(); + + assert!(res.is_ok()); + let res = res.unwrap(); + let mut i = res.iter(); + + { + let elem = i.next().unwrap(); + let expe = LogItem::Progress(0); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + } + { + let elem = i.next().unwrap(); + let expe = LogItem::Line("Some log line".bytes().collect()); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + } + { + let elem = i.next().unwrap(); + let expe = LogItem::CurrentPhase(String::from("configure")); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + } + { + let expe = LogItem::Line("Some log line".bytes().collect()); + + let elem = i.next().unwrap(); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + + let elem = i.next().unwrap(); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + + let elem = i.next().unwrap(); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + } + { + let elem = i.next().unwrap(); + let expe = LogItem::CurrentPhase(String::from("Build")); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + } + { + let expe = LogItem::Line("Some other log line".bytes().collect()); + + let elem = i.next().unwrap(); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + + let elem = i.next().unwrap(); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + + let elem = i.next().unwrap(); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + } + { + let elem = i.next().unwrap(); + let expe = LogItem::State(Ok(String::from("finished successfully"))); + assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + } + { + assert!(i.next().is_none()); + } + } } |