18 lines
1.5 KiB
Python
18 lines
1.5 KiB
Python
from pathlib import Path
|
|
import datetime,hashlib,json
|
|
root=Path(__file__).resolve().parent/'repair-native-fixtures-20260912'
|
|
valid=(root/'expected-repair/project.arcadia').read_bytes()
|
|
before=valid.replace('Repair 救援'.encode(),'Before 救援'.encode())
|
|
renamed=valid.replace(b'"Assess"',b'"Assess reviewed"')
|
|
if before==valid or renamed==valid: raise RuntimeError('Fixture replacement failed')
|
|
created=[]
|
|
for name,data in [('expected-recovery-before',before),('expected-repair-renamed',renamed),('working-recovery',valid)]:
|
|
d=root/name;d.mkdir();p=d/'project.arcadia';p.write_bytes(data);created.append(p)
|
|
if name.startswith('expected-'):p.chmod(0o444)
|
|
journal=root/'working-recovery/.arcadia-save-project.arcadia.journal';journal.mkdir()
|
|
for name,data in [('journal.json',b'{"version":1,"entry":"project.arcadia","files":[{"path":"project.arcadia","before":true,"write":true}]}'),('0.before',before),('0.after',valid)]:
|
|
p=journal/name;p.write_bytes(data);created.append(p)
|
|
receipt={'utc':datetime.datetime.now(datetime.timezone.utc).isoformat(),'scope':'Prepared one real v1 interrupted-save journal and exact post-recovery/graphical-rename expectations; no native result','files':[{'path':p.relative_to(root).as_posix(),'bytes':p.stat().st_size,'sha256':hashlib.sha256(p.read_bytes()).hexdigest()} for p in created]}
|
|
with (root/'recovery-preparation.json').open('x',encoding='utf-8') as f:json.dump(receipt,f,indent=2)
|
|
print(json.dumps({'result':'prepared','files':len(created)}))
|