1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#![allow(clippy::disallowed_types)]
use std::env;
use std::sync::Mutex;
#[macro_use]
mod macros;
#[cfg(feature = "ring")]
#[path = "."]
mod tests_with_ring {
use super::serialized;
provider_ring!();
#[path = "../key_log_file_env.rs"]
mod tests;
}
#[cfg(feature = "aws_lc_rs")]
#[path = "."]
mod tests_with_aws_lc_rs {
use super::serialized;
provider_aws_lc_rs!();
#[path = "../key_log_file_env.rs"]
mod tests;
}
/// Approximates `#[serial]` from the `serial_test` crate.
///
/// No attempt is made to recover from a poisoned mutex, which will
/// happen when `f` panics. In other words, all the tests that use
/// `serialized` will start failing after one test panics.
#[allow(dead_code)]
fn serialized(f: impl FnOnce()) {
// Ensure every test is run serialized
static MUTEX: Mutex<()> = const { Mutex::new(()) };
let _guard = MUTEX.lock().unwrap();
// XXX: NOT thread safe.
unsafe { env::set_var("SSLKEYLOGFILE", "./sslkeylogfile.txt") };
f()
}
|