Files
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

25 lines
1.8 KiB
Python

from pathlib import Path
import subprocess,os,json
root=Path('/tmp/erri-pair-hq-0054');rel=Path('addons/core/Scripts/Game/ERR/10_AI/ERR_HQMountedDispatch.c');source=(root/rel).read_text()
env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONPATH='/home/jakub/devel/escapistsrereintroduced/tests')
cases={'green':root/rel,'baseline':root/'baseline'/rel}
mutations={
'receipt-barrier':(' if (!m_MountedInterceptReceipt || (partner && !m_MountedInterceptPartnerReceipt)) return;', ' if (!m_MountedInterceptReceipt) return;'),
'partner-count':(' if (m_MountedInterceptPartner) count++;',' // mutation: partner not counted'),
'partner-claim-cleanup':(' if (partner && partnerUnit && partnerUnit.LogisticsReservation == partner.Token) partnerUnit.LogisticsReservation = 0;', ' if (partner && partnerUnit && partnerUnit.LogisticsReservation == partner.Token) partnerUnit.LogisticsReservation = partner.Token;'),
'token-domain':('400002 + m_MountedTokenCount','400001 + m_MountedTokenCount'),
'survey-budget':('scanned < count && queries < 2','scanned < count && queries < 3')
}
for name,(old,new) in mutations.items():
assert old in source
p=root/'mutations'/name/rel;p.parent.mkdir(parents=True,exist_ok=True);p.write_text(source.replace(old,new));cases[name]=p
results=[]
for name,p in cases.items():
env['ERR_HQ_MOUNTED_DISPATCH_SOURCE']=str(p)
with (root/(name+'.log')).open('w') as log:r=subprocess.run(['python3',str(root/'tests/test_hq_mounted_dispatch.py')],env=env,stdout=log,stderr=subprocess.STDOUT)
text=(root/(name+'.log')).read_text();runtime='Assertion' in text or 'assertion' in text
results.append({'case':name,'exit_code':r.returncode,'runtime_assertion':runtime})
if name=='green':assert r.returncode==0
else: assert r.returncode!=0 and runtime,(name,text[:500])
(root/'results.json').write_text(json.dumps(results,indent=2)+'\n');print(json.dumps(results))