trace 0.1.7

A procedural macro for tracing the execution of functions
Documentation
#[macro_export]
macro_rules! trace_test {
    ($test_name:ident, $expression:expr) => {
        #[test]
        fn $test_name() {
            use std::io::Read;

            let mut actual_output = String::new();
            {
                let mut buf = gag::BufferRedirect::stdout().unwrap();
                $expression;
                buf.read_to_string(&mut actual_output).unwrap();
            }

            let test_filename = concat!(
                "examples/expected_test_outputs/",
                stringify!($test_name),
                ".expected"
            );
            let expected_output = std::fs::read_to_string(test_filename).unwrap();
            assert_eq!(actual_output, expected_output);
        }
    };
}