use std::env;
use std::fs::{File, OpenOptions};
use std::io::Write;
use std::sync::Mutex;
use once_cell::sync::Lazy;
static COVERAGE_FILE: Lazy<Option<Mutex<File>>> = Lazy::new(|| {
if let Some(filename) = env::var_os("GLEAN_TEST_COVERAGE") {
match OpenOptions::new().append(true).create(true).open(filename) {
Ok(file) => {
return Some(Mutex::new(file));
}
Err(err) => {
log::error!("Couldn't open file for coverage results: {:?}", err);
}
}
}
None
});
pub(crate) fn record_coverage(metric_id: &str) {
if let Some(file_mutex) = &*COVERAGE_FILE {
let mut file = file_mutex.lock().unwrap();
writeln!(&mut file, "{}", metric_id).ok();
file.flush().ok();
}
}