33 lines
1.9 KiB
Python
33 lines
1.9 KiB
Python
from pathlib import Path
|
|
import datetime, hashlib, json, subprocess, sys
|
|
|
|
root = Path('C:/ar-focus-01a0d717')
|
|
assert Path.cwd().resolve() == root
|
|
checker = root / '.local/verify-focus-native.py'
|
|
expected = '8b88f148e6a4137375d9784494a15c894c45bb8f3c2379ea2bc954e68c61421f'
|
|
digest = lambda p: hashlib.sha256(p.read_bytes()).hexdigest()
|
|
assert digest(checker) == expected
|
|
attempt = root / '.local/focus-oracle-attempt01'
|
|
attempt.mkdir()
|
|
start = datetime.datetime.now(datetime.timezone.utc).isoformat()
|
|
with (attempt / 'stdout.log').open('xb') as out, (attempt / 'stderr.log').open('xb') as err:
|
|
result = subprocess.run([sys.executable, str(checker)], cwd=root, stdout=out, stderr=err)
|
|
receipt = {'source': '38789512626cb24f78f274998977fc8c6cf960d1',
|
|
'checker_sha256': expected, 'checker_unchanged': digest(checker) == expected,
|
|
'start': start, 'finish': datetime.datetime.now(datetime.timezone.utc).isoformat(),
|
|
'exit_code': result.returncode, 'stdout_bytes': (attempt / 'stdout.log').stat().st_size,
|
|
'stderr_bytes': (attempt / 'stderr.log').stat().st_size}
|
|
if result.returncode == 0:
|
|
report = root / '.local/focus-native/independent-oracle.json'
|
|
receipt['report_sha256'] = digest(report)
|
|
receipt['cases'] = {case: {'captures': len(value['captures']), 'nodes': value['nodes'],
|
|
'ports': value['ports'], 'edges': value['edges'],
|
|
'warnings': len(value['diagnostics']), 'focus_gain': value['focus_gain']}
|
|
for case, value in json.loads(report.read_bytes())['cases'].items()}
|
|
with (attempt / 'result.json').open('x', encoding='utf-8') as output:
|
|
json.dump(receipt, output, indent=2); output.write('\n')
|
|
print(json.dumps(receipt, indent=2))
|
|
if result.returncode:
|
|
print((attempt / 'stderr.log').read_text(encoding='utf-8'))
|
|
assert result.returncode == 0 and receipt['checker_unchanged'] and receipt['stderr_bytes'] == 0
|