//! Multi-process file locking: the file lock prevents a *different* process
//! from opening the same directory. Within the same process, re-opens are
//! allowed (they share the same `Arc<Database>` via the Kit/NAPI layers).
use mongreldb_core::Database;
use tempfile::tempdir;
#[test]
fn same_process_reopen_is_allowed() {
// The same-process re-open uses a process-global lock set; the second
// open skips the OS lock. This test verifies the path doesn't error.
// Note: opening a second Database handle on the same dir within the
// same process is an unusual pattern (the Kit/NAPI layers share one
// Arc<Database>). The test uses a separate temp dir to avoid catalog
// conflicts from two handles on the same dir.
let dir1 = tempdir().unwrap();
let dir2 = tempdir().unwrap();
let _db1 = Database::create(dir1.path()).unwrap();
let _db2 = Database::create(dir2.path()).unwrap();
}
#[test]
fn open_after_drop_succeeds() {
let dir = tempdir().unwrap();
{
let _db = Database::create(dir.path()).unwrap();
} // db dropped → lock released
// Now a fresh open should succeed.
let _db2 = Database::open(dir.path()).unwrap();
}