Files
EscapistsReintroduced/docs/evidence/mounted-interception-2026-10-02/convoy/run-final.py
T
jakub 6a667d8deb Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
2026-10-13 22:52:53 +02:00

16 lines
1.8 KiB
Python

from pathlib import Path
import os,subprocess,json
P=Path('/tmp/erri-mounted-intercept-convoy-1247');R=Path('/home/jakub/devel/escapistsrereintroduced');D=P/'addons/core/Scripts/Game/ERR/10_AI';env=os.environ.copy();env.update(PYTHONDONTWRITEBYTECODE='1',PYTHONPATH=str(R/'tests'),ERR_CONVOY_SERVICE=str(D/'ERR_ConvoyService.c'),ERR_SUPPLY_SERVICE_SOURCE=str(D/'ERR_SupplyConvoyService.c'),ERR_SUPPLY_COLUMN_SOURCE=str(D/'ERR_SupplyConvoyColumn.c'),ERR_SUPPLY_TACTICS_SOURCE=str(D/'ERR_SupplyConvoyTactics.c'));results={}
for name in ['test_convoy_lifecycle.py','test_convoy_combat.py','test_convoy_column.py','test_supply_convoys.py','test_convoy_admission.py','test_convoy_dispatch.py']:
f=P/'tests'/name
if not f.exists():f=R/'tests'/name
r=subprocess.run(['python3',str(f)],env=env,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,text=True);(P/('final-'+name+'.log')).write_text(r.stdout);results[name]=r.returncode;print(name,r.returncode,flush=True)
if r.returncode:print(r.stdout[-4000:])
(P/'final-results.json').write_text(json.dumps(results,indent=2)+'\n');assert not any(results.values())
# A production mutation keeps signatures/native adapters unchanged, then must fail runtime.
s=(D/'ERR_ConvoyService.c').read_text();mut=s.replace('if (delivered) LegDeadline = now + 600000;', 'LegDeadline = now + 600000;').replace('bool delivered = InterceptActive;', '')
m=P/'mutation-pending-deadline.c';m.write_text(mut);env['ERR_CONVOY_SERVICE']=str(m)
r=subprocess.run(['python3',str(P/'tests/test_convoy_lifecycle.py')],env=env,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,text=True);(P/'mutation-pending-deadline.log').write_text(r.stdout)
assert r.returncode and 'Assertion' in r.stdout and 'error:' not in r.stdout,r.stdout
print('pending-deadline mutation: compiled runtime failure',flush=True)