summaryrefslogtreecommitdiffstats
path: root/src/log
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-10-27 10:31:24 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-10-27 14:06:50 +0100
commit12a62951585c9d23e28a5520c57e422c2f45ab2a (patch)
treebdb17f1240fc00e866d96f858faec9c2a67f5b96 /src/log
parenta9fb2644cac1a4fe8cd75df3ed8b5f9182cb8238 (diff)
Add multiline string test
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/log')
-rw-r--r--src/log/parser.rs105
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());
+ }
+ }
}