Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
25 lines
1.8 KiB
Python
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))
|