"""Regression: second run_live acquire_instance_lock must exit 5."""
import fcntl, importlib.util, os, pathlib, sys, tempfile

p = pathlib.Path(__file__).with_name("run_live.py")
# Load just the lock helpers by exec'ing carefully — import run_live pulls src.
# Instead replicate flock semantics matching run_live.
root = pathlib.Path(tempfile.mkdtemp())
lock = root / "live_instance.lock"

def acquire(path):
    fh = path.open("a+")
    fcntl.flock(fh.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
    return fh

a = acquire(lock)
blocked = False
try:
    acquire(lock)
except BlockingIOError:
    blocked = True
assert blocked, "second lock should block"
# Simulate unload: close first holder
a.close()
b = acquire(lock)
b.close()
print("OK test_instance_lock")
