7b91169017
- Move src/* into crates/tui/src/ to create a proper workspace structure - Add .claude/ and .trimtab/ directories for Trimtab closed-loop workflow - Add DEPENDENCY_GRAPH.md and update documentation - Update Cargo.toml files to reflect new crate dependencies - Update CI workflows and npm package scripts - All tests pass, release build works
20 lines
565 B
Rust
20 lines
565 B
Rust
//! Shared test-only helpers.
|
|
|
|
use std::sync::{Mutex, MutexGuard, OnceLock};
|
|
|
|
fn env_lock() -> &'static Mutex<()> {
|
|
static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
|
|
LOCK.get_or_init(|| Mutex::new(()))
|
|
}
|
|
|
|
/// Acquire the process-wide env-var mutex.
|
|
///
|
|
/// If a prior test panicked while holding the lock, recover the guard instead
|
|
/// of cascading failures across unrelated tests.
|
|
pub(crate) fn lock_test_env() -> MutexGuard<'static, ()> {
|
|
match env_lock().lock() {
|
|
Ok(guard) => guard,
|
|
Err(poisoned) => poisoned.into_inner(),
|
|
}
|
|
}
|