diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2021-01-18 14:48:59 +0100 |
---|---|---|
committer | Matthias Beyer <matthias.beyer@atos.net> | 2021-01-18 14:48:59 +0100 |
commit | 0295809436d8e178a7d0528b47b9d4313b292eef (patch) | |
tree | 55671566fb700328c81a34b322cfa55309e098f8 /src/log/parser.rs | |
parent | 5bee5329b823431fd3c971f75281084617766edd (diff) |
Run `cargo fmt`
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/log/parser.rs')
-rw-r--r-- | src/log/parser.rs | 150 |
1 files changed, 112 insertions, 38 deletions
diff --git a/src/log/parser.rs b/src/log/parser.rs index 109db0a..91835cd 100644 --- a/src/log/parser.rs +++ b/src/log/parser.rs @@ -20,15 +20,17 @@ use futures::TryStreamExt; use pom::parser::Parser as PomParser; use shiplift::tty::TtyChunk; -use crate::log::LogItem; use crate::log::util::*; +use crate::log::LogItem; type IoResult<T> = RResult<T, futures::io::Error>; pub fn buffer_stream_to_line_stream<S>(stream: S) -> impl Stream<Item = IoResult<String>> - where S: Stream<Item = shiplift::Result<TtyChunk>> + std::marker::Unpin +where + S: Stream<Item = shiplift::Result<TtyChunk>> + std::marker::Unpin, { - stream.map(|r| r.map(TtyChunkBuf::from)) + stream + .map(|r| r.map(TtyChunkBuf::from)) .map_err(|e| futures::io::Error::new(futures::io::ErrorKind::Other, e)) .into_async_read() .lines() @@ -46,7 +48,8 @@ impl ParsedLog { } pub fn is_successfull(&self) -> Option<bool> { - self.0.iter() + self.0 + .iter() .rev() .filter_map(|line| match line { LogItem::State(Ok(_)) => Some(true), @@ -75,29 +78,26 @@ pub fn parser<'a>() -> PomParser<'a, u8, LogItem> { } fn string<'a>() -> PomParser<'a, u8, String> { - let special_char = sym(b'\\') | sym(b'/') | sym(b'"') - | sym(b'b').map(|_|b'\x08') | sym(b'f').map(|_|b'\x0C') - | sym(b'n').map(|_|b'\n') | sym(b'r').map(|_|b'\r') | sym(b't').map(|_|b'\t'); + let special_char = sym(b'\\') + | sym(b'/') + | sym(b'"') + | sym(b'b').map(|_| b'\x08') + | sym(b'f').map(|_| b'\x0C') + | sym(b'n').map(|_| b'\n') + | sym(b'r').map(|_| b'\r') + | sym(b't').map(|_| b'\t'); let escape_sequence = sym(b'\\') * special_char; let string = (none_of(b"\\\"") | escape_sequence).repeat(0..); string.convert(String::from_utf8) } - ( - seq(b"#BUTIDO:") * ( - (seq(b"PROGRESS:") * number.map(LogItem::Progress)) - | - (seq(b"PHASE:") * string().map(LogItem::CurrentPhase)) - | - ( - (seq(b"STATE:ERR:") * string().map(|s| LogItem::State(Err(s)))) - | - seq(b"STATE:OK").map(|_| LogItem::State(Ok(()))) - ) - ) - ) - | ignored().map(LogItem::Line) + (seq(b"#BUTIDO:") + * ((seq(b"PROGRESS:") * number.map(LogItem::Progress)) + | (seq(b"PHASE:") * string().map(LogItem::CurrentPhase)) + | ((seq(b"STATE:ERR:") * string().map(|s| LogItem::State(Err(s)))) + | seq(b"STATE:OK").map(|_| LogItem::State(Ok(())))))) + | ignored().map(LogItem::Line) } #[cfg(test)] @@ -112,12 +112,11 @@ mod tests { LogItem::Line(buf) => { let line = String::from_utf8(buf.to_vec()).unwrap(); format!("LogItem::Line({})", line) - }, + } other => format!("{:?}", other), } } - #[test] fn test_non_log() { let s = "foo bar"; @@ -170,7 +169,12 @@ mod tests { 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)); + assert_eq!( + r, + LogItem::CurrentPhase(String::from("a")), + "Expected CurrentPhase(a), got: {}", + prettify_item(&r) + ); } #[test] @@ -183,7 +187,12 @@ mod tests { 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)); + assert_eq!( + r, + LogItem::CurrentPhase(String::from("a\n\n ")), + "Expected CurrentPhase(a), got: {}", + prettify_item(&r) + ); } #[test] @@ -210,61 +219,126 @@ mod tests { .collect::<Result<Vec<_>>>(); assert!(res.is_ok()); - let res = res.unwrap(); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + assert_eq!( + *elem, + expe, + "Expected {}: {:?}", + prettify_item(&expe), + prettify_item(elem) + ); } { let elem = i.next().unwrap(); let expe = LogItem::State(Ok(())); - assert_eq!(*elem, expe, "Expected {}: {:?}", prettify_item(&expe), prettify_item(elem)); + assert_eq!( + *elem, + expe, + "Expected {}: {:?}", + prettify_item(&expe), + prettify_item(elem) + ); } { assert!(i.next().is_none()); } } } - |