Files
ARCADIA-Studio/harness/experiments/save-diagnostics-package-20261001/raw/check-native-bytes.py
T

51 lines
3.0 KiB
Python

"""Complete 37-file phase oracle; only inject/restore intentionally mutate a QA fixture."""
from pathlib import Path
import hashlib, json, sys
root = Path(__file__).resolve().parent
native = root / 'qa/native46'
record = json.loads((native / 'baseline.json').read_text(encoding='utf-8'))
source = Path(record['bundle']) / 'examples/release1'
work = root / 'working'
dependency = record['external_dependency']
phase = sys.argv[1]
assert phase in ['collision', 'saved-a', 'saved-c', 'external-before', 'inject', 'external-refused', 'restore', 'external-recovered']
sha = lambda b: hashlib.sha256(b).hexdigest()
original = {r: (source / r).read_bytes() for r in record['baseline']}
assert {r: {'bytes': len(b), 'sha256': sha(b)} for r, b in original.items()} == record['baseline']
def check(folder, expected):
actual = {f.relative_to(folder).as_posix(): f.read_bytes() for f in folder.rglob('*') if f.is_file()}
assert actual.keys() == expected.keys(), (phase, 'file set', sorted(actual.keys() ^ expected.keys()))
assert all(actual[r] == b for r, b in expected.items()), (phase, 'changed files', [r for r, b in expected.items() if actual[r] != b])
return {r: {'bytes': len(b), 'sha256': sha(b)} for r, b in actual.items()}
if phase in ['collision', 'saved-a', 'saved-c']:
expected = original.copy()
if phase != 'collision':
old = b'oa_activity oa_assess "Assess pressure alarm" id "61f7bbfb-74a4-5540-9182-2583dfb27a49"'
new = b'oa_activity oa_assess "Assess pressure alarm Package46" id "61f7bbfb-74a4-5540-9182-2583dfb27a49"'
assert record['declared_rename'] == {'activity': '61f7bbfb-74a4-5540-9182-2583dfb27a49', 'before': 'Assess pressure alarm', 'after': 'Assess pressure alarm Package46'}
assert expected[dependency].count(old) == 1
expected[dependency] = expected[dependency].replace(old, new)
folder = work / ('fresh-c' if phase == 'saved-c' else 'collision-a')
assert not (work / 'collision-a/collision-copy.arcadia').exists()
files = check(folder, expected)
else:
folder = work / 'external-b'
changed = original.copy()
changed[dependency] += record['external_comment'].encode('utf-8')
if phase == 'inject':
check(folder, original)
(folder / dependency).write_bytes(changed[dependency])
expected = changed
elif phase == 'restore':
check(folder, changed)
(folder / dependency).write_bytes(original[dependency])
expected = original
else:
expected = changed if phase == 'external-refused' else original
files = check(folder, expected)
result = {'status': 'PASS', 'phase': phase, 'folder': str(folder), 'files': files,
'scope': 'Complete 37-file set and bytes, including seven parent-copied companions, equals declared original plus only phase-specific Activity name or parent-injected valid comment.'}
with (native / (phase + '-oracle.json')).open('x', encoding='utf-8') as f:
json.dump(result, f, indent=2); f.write('\n')
print(json.dumps({'status': 'PASS', 'phase': phase, 'files': len(files)}, indent=2))