assertx/logging/
assert_logs_contain_in_order.rs

1/// Deprecated. Please use [assert_logs_contain_in_order] instead
2#[macro_export]
3#[deprecated]
4macro_rules! assert_logs_contain {
5    ($inspector: expr, $($level:expr => $line: literal),*) => {
6        let mut expected = Vec::<$crate::logging::interface::LogLine>::new();
7        $(
8            expected.push($crate::logging::interface::LogLine($level, $line.to_string()));
9        )*
10
11        $inspector.assert_logs_contain_in_order(&expected);
12    };
13}
14
15/// Asserts that logs contain the expected messages
16/// All logging tests need to invoke the `logging::setup_logging_test` method to capture logs for assertion
17///
18/// # Examples
19/// ```
20/// # #[macro_use] extern crate assertx;
21/// # #[macro_use] extern crate log;
22/// # use assertx::logging;
23/// # use log::Level;
24/// # fn main() {
25///     let logs = logging::setup_logging_test();
26///
27///     info!("Doing stuff");
28///     warn!("Oops, something happened!");
29///
30///     assert_logs_contain_in_order!(
31///         logs,
32///         Level::Info => "Doing stuff",
33///         Level::Warn => "Oops, something happened!"
34///     );
35/// # }
36/// ```
37#[macro_export]
38macro_rules! assert_logs_contain_in_order {
39    ($inspector: expr, $($level:expr => $line: expr),*) => {
40        let mut expected = Vec::<$crate::logging::interface::LogLine>::new();
41        $(
42            expected.push($crate::logging::interface::LogLine($level, $line.to_string()));
43        )*
44
45        $inspector.assert_logs_contain_in_order(&expected);
46    };
47}
48
49#[cfg(test)]
50mod tests {
51    use crate::logging::setup_logging_test;
52    use log::{info, warn, Level};
53
54    #[test]
55    fn should_succeed_if_logs_contain_all_of_the_expected_items_in_order() {
56        let logs = setup_logging_test();
57
58        info!("Doing stuff");
59        warn!("Oops, something happened!");
60
61        assert_logs_contain_in_order!(
62            logs,
63            Level::Warn => "Oops, something happened!"
64        );
65    }
66
67    #[test]
68    fn should_allow_expressions() {
69        let logs = setup_logging_test();
70
71        warn!("Oops, something happened!");
72
73        assert_logs_contain_in_order!(
74            logs,
75            Level::Warn => format!("{}", "Oops, something happened!")
76        );
77    }
78}