#log #logging #testing #oyster-pack #bar #macro #standardization

oysterpack_testing

Standardizes logging for the OysterPack platform

3 releases

Uses old Rust 2015

0.1.2 Oct 26, 2018
0.1.1 Oct 26, 2018
0.1.0 Oct 25, 2018

#2 in #oyster-pack


Used in 2 crates

MIT/Apache

13KB
106 lines

This crate is meant to be used as a dev dependency. Its purpose is to provides the testing support to help reduce boilerplate, duplication, and provides standardization.

The following macros are provided:

  • op_tests_mod
    • provides support to configure logging for tests
    • logs test execution time
  • op_test
    • used to generate test functions that leverage the tests module generated by op_tests_mod!()

Example


#[cfg(test)]
#[macro_use]
extern crate oysterpack_testing;

#[cfg(test)]
op_tests_mod!();

#[cfg(test)]
mod foo_test {
   // the macro creates a test function named 'foo'
   op_test!(foo, {
      info!("SUCCESS");
   });

   #[test]
   fn foo_test() {
      // alternatively use ::run_test("test name",|| { // test code })
      ::run_test("foo_test", || {
        // by default the crate's log level is set to Debug
        debug!("SUCCESS")
      });
   }
}

Example - configuring target log levels


#[cfg(test)]
#[macro_use]
extern crate oysterpack_testing;

#[cfg(test)]
op_tests_mod! {
    "foo" => Info,
    "bar" => Error
}

#[cfg(test)]
mod foo_test {
   op_test!(foo, {
      info!("this will be logged because this crate's log level is Debug");
      info!(target: "foo", "foo info will be logged");
      info!(target: "bar", "*** bar info will not be logged ***");
      error!(target: "bar", "bar error will be logged");
   });

   #[test]
   fn foo_test() {
      ::run_test("foo_test", || {
        debug!("SUCCESS")
      });
   }
}

Notes

  • the log, fern, and chrono crates are re-exported because they are used by the macros. Re-exporting them makes the macros self-contained.

Dependencies

~1.4–1.9MB
~29K SLoC