Skip to content

Commit 1d744e3

Browse files
committed
logs: setup logging during a few tests
1 parent 4cc86bb commit 1d744e3

File tree

4 files changed

+32
-19
lines changed

4 files changed

+32
-19
lines changed

src/logs/mod.rs

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ mod storage;
33
use crate::prelude::*;
44
use log::{Log, Metadata, Record};
55
use std::cell::RefCell;
6+
use std::sync::Once;
67
use std::thread::LocalKey;
78

89
pub use self::storage::LogStorage;
910

11+
static INIT_LOGS: Once = Once::new();
12+
1013
thread_local! {
1114
static SCOPED: RefCell<Vec<Box<Log>>> = RefCell::new(Vec::new());
1215
}
@@ -71,19 +74,29 @@ where
7174
result
7275
}
7376

74-
pub fn init() -> Fallible<()> {
75-
// Initialize env_logger
76-
// This doesn't use from_default_env() because it doesn't allow to override filter_module()
77-
// with the RUST_LOG environment variable
78-
let mut env = env_logger::Builder::new();
79-
env.filter_module("crater", log::LevelFilter::Info);
80-
if let Ok(content) = std::env::var("RUST_LOG") {
81-
env.parse(&content);
82-
}
77+
pub fn init() {
78+
INIT_LOGS.call_once(|| {
79+
// Initialize env_logger
80+
// This doesn't use from_default_env() because it doesn't allow to override filter_module()
81+
// with the RUST_LOG environment variable
82+
let mut env = env_logger::Builder::new();
83+
env.filter_module("crater", log::LevelFilter::Info);
84+
if let Ok(content) = std::env::var("RUST_LOG") {
85+
env.parse(&content);
86+
}
8387

84-
let multi = MultiLogger::new(vec![Box::new(env.build())], &SCOPED);
85-
log::set_boxed_logger(Box::new(multi))?;
86-
log::set_max_level(log::LevelFilter::Trace);
88+
let multi = MultiLogger::new(vec![Box::new(env.build())], &SCOPED);
89+
log::set_boxed_logger(Box::new(multi)).unwrap();
90+
log::set_max_level(log::LevelFilter::Trace);
91+
});
92+
}
8793

88-
Ok(())
94+
#[cfg(test)]
95+
pub(crate) fn init_test() {
96+
INIT_LOGS.call_once(|| {
97+
// Avoid setting up ENV_LOGGER inside tests
98+
let multi = MultiLogger::new(vec![], &SCOPED);
99+
log::set_boxed_logger(Box::new(multi)).unwrap();
100+
log::set_max_level(log::LevelFilter::Trace);
101+
})
89102
}

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use log::info;
22
mod cli;
33

4-
use crater::{logs, utils};
4+
use crater::utils;
55
use failure::Fallible;
66
use std::panic;
77
use std::process;
@@ -11,7 +11,7 @@ fn main() {
1111
// Ignore errors loading `.env` file.
1212
let _ = dotenv::dotenv();
1313

14-
let _guard = logs::init();
14+
crater::logs::init();
1515
let success = match panic::catch_unwind(main_) {
1616
Ok(Ok(())) => true,
1717
Ok(Err(e)) => {

src/report/archives.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ mod tests {
108108

109109
#[test]
110110
fn test_logs_archives_generation() {
111+
crate::logs::init_test();
112+
111113
let config = Config::default();
112114
let db = Database::temp().unwrap();
113115
let writer = DummyWriter::default();

src/results/db.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,8 @@ mod tests {
278278

279279
#[test]
280280
fn test_results() {
281+
crate::logs::init_test();
282+
281283
let db = Database::temp().unwrap();
282284
let results = DatabaseDB::new(&db);
283285
let config = Config::default();
@@ -310,10 +312,6 @@ mod tests {
310312
.unwrap(),
311313
Some(TestResult::TestPass)
312314
);
313-
assert_eq!(
314-
results.get_result(&ex, &MAIN_TOOLCHAIN, &krate).unwrap(),
315-
Some(TestResult::TestPass)
316-
);
317315
assert!(String::from_utf8_lossy(
318316
&results
319317
.load_log(&ex, &MAIN_TOOLCHAIN, &krate)

0 commit comments

Comments
 (0)