sim: Enable logging in simulator test cases

When running simulations as unit tests, use a workaround from
https://stackoverflow.com/questions/30177845/how-to-initialize-the-logger-for-integration-tests
to initialize the logging system.

Signed-off-by: David Brown <david.brown@linaro.org>
This commit is contained in:
David Brown 2017-11-03 08:37:38 -06:00 committed by David Brown
parent dd2b118b21
commit ca7b5d33da
3 changed files with 23 additions and 0 deletions

View File

@ -21,6 +21,7 @@ use std::slice;
mod caps; mod caps;
mod tlv; mod tlv;
pub mod testlog;
use simflash::{Flash, SimFlash}; use simflash::{Flash, SimFlash};
use mcuboot_sys::{c, AreaDesc, FlashId}; use mcuboot_sys::{c, AreaDesc, FlashId};

19
sim/src/testlog.rs Normal file
View File

@ -0,0 +1,19 @@
//! Logging support for the test framework.
//!
//! https://stackoverflow.com/questions/30177845/how-to-initialize-the-logger-for-integration-tests
//!
//! The test framework runs the tests, possibly simultaneously, and in various orders. This helper
//! function, which should be called at the beginning of each test, will setup logging for all of
//! the tests.
use env_logger;
use std::sync::{Once, ONCE_INIT};
static INIT: Once = ONCE_INIT;
/// Setup the logging system. Intended to be called at the beginning of each test.
pub fn setup() {
INIT.call_once(|| {
env_logger::init().unwrap();
});
}

View File

@ -5,9 +5,12 @@
extern crate bootsim; extern crate bootsim;
use bootsim::{ALL_DEVICES, RunStatus}; use bootsim::{ALL_DEVICES, RunStatus};
use bootsim::testlog;
#[test] #[test]
fn core_tests() { fn core_tests() {
testlog::setup();
let mut status = RunStatus::new(); let mut status = RunStatus::new();
for &dev in ALL_DEVICES { for &dev in ALL_DEVICES {