pub mod decomposition;
pub mod fixtures;
pub mod ui;
pub use fixtures::{copy_directory, copy_fixture};
pub use ui::{
FixtureEnvironment, discover_fixtures, prepare_fixture, read_directory_config,
read_fixture_config, resolve_fixture_config, run_fixtures_with, run_test_runner,
};
use std::ffi::OsString;
use std::sync::{Mutex, MutexGuard, OnceLock};
pub fn env_test_guard() -> MutexGuard<'static, ()> {
static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
LOCK.get_or_init(|| Mutex::new(()))
.lock()
.unwrap_or_else(|error| panic!("expected environment test lock: {error}"))
}
pub struct LocaleOverride {
previous: Option<OsString>,
}
impl LocaleOverride {
pub fn set(locale: &str) -> Self {
let previous = std::env::var_os("DYLINT_LOCALE");
unsafe {
std::env::set_var("DYLINT_LOCALE", locale);
}
Self { previous }
}
pub fn clear() -> Self {
let previous = std::env::var_os("DYLINT_LOCALE");
unsafe {
std::env::remove_var("DYLINT_LOCALE");
}
Self { previous }
}
}
impl Drop for LocaleOverride {
fn drop(&mut self) {
if let Some(value) = &self.previous {
unsafe {
std::env::set_var("DYLINT_LOCALE", value);
}
} else {
unsafe {
std::env::remove_var("DYLINT_LOCALE");
}
}
}
}