use crate::terminal::app::force_mock_terminal_app;
use crate::terminal::registry::force_mock_color_level;
use crate::terminal::{ColorLevel, TerminalApp};
use std::sync::{LazyLock, Mutex, MutexGuard};
static TEST_MUTEX: LazyLock<Mutex<()>> = LazyLock::new(|| Mutex::new(()));
pub struct MockTerminalGuard<'a> {
_lock: MutexGuard<'a, ()>,
}
impl<'a> MockTerminalGuard<'a> {
pub fn acquire(app: TerminalApp, level: ColorLevel) -> Self {
let lock = TEST_MUTEX.lock().unwrap();
force_mock_terminal_app(Some(app));
force_mock_color_level(Some(level));
Self { _lock: lock }
}
}
impl<'a> Drop for MockTerminalGuard<'a> {
fn drop(&mut self) {
force_mock_terminal_app(None);
force_mock_color_level(None);
}
}