Files
jobtrackingapp/docs/redesign/phase-9/p9-sec-02/model/windows_lock_probe.py
T
cesnimda 30e251a593
MariaDB persistence qualification / mariadb (push) Has been cancelled
fix: qualify patched Python model and cache dependencies
2026-10-25 08:18:21 +01:00

32 lines
1.5 KiB
Python

"""Supplemental Windows lock compatibility in a new local test directory."""
from pathlib import Path
import json
import subprocess
import sys
import tempfile
target = str(Path(sys.argv[1]).resolve())
sys.path.insert(0, target)
import filelock
assert filelock.__version__ == '4.2.1'
assert Path(filelock.__file__).resolve().is_relative_to(Path(target))
child = '''import sys
sys.path.insert(0,sys.argv[1])
from filelock import FileLock,SoftFileLock,Timeout
cls=FileLock if sys.argv[2]=='native' else SoftFileLock
try:
with cls(sys.argv[3],timeout=0.2): print('acquired')
except Timeout: print('timed-out')
'''
cases = []
with tempfile.TemporaryDirectory(prefix='jt-sec02-windows-lock-') as temporary:
for kind, cls in [('native', filelock.FileLock), ('soft', filelock.SoftFileLock)]:
command=[sys.executable,'-c',child,target,kind,str(Path(temporary)/(kind+'.lock'))]
with cls(command[-1],timeout=1):
result=subprocess.run(command,capture_output=True,text=True,timeout=5,check=True)
assert result.stdout.strip()=='timed-out',result.stdout
result=subprocess.run(command,capture_output=True,text=True,timeout=5,check=True)
assert result.stdout.strip()=='acquired',result.stdout
cases.append({'case':kind,'finiteContentionTimeout':True,'acquiredAfterRelease':True})
print(json.dumps({'status':'PASS','platform':sys.platform,'filelock':filelock.__version__,'cases':cases,'limits':'Two fresh same-version Windows lock participants. No Windows shared-cache ACL/symlink security or cross-version migration claim.'}))