13 lines
1.2 KiB
Python
13 lines
1.2 KiB
Python
from pathlib import Path
|
|
import subprocess,json,time
|
|
p=Path(__file__).resolve().parent
|
|
image='code.forgejo.org/forgejo/forgejo@sha256:691657c7e64af7730a2e885e6d022cf16ae60724931c5392bd61838afadcaeba'
|
|
prefix=['docker','run','--rm','--network=none','--user=1000:1000','--read-only','--cap-drop=ALL','--security-opt=no-new-privileges:true','--tmpfs','/tmp:rw,size=64m,uid=1000,gid=1000','--tmpfs','/data:rw,size=64m,uid=1000,gid=1000','--mount','type=bind,src='+str(p)+',dst=/scripts,readonly','--mount','type=bind,src='+str(p.parent/'native-r2')+',dst=/original,readonly','--entrypoint=/bin/sh',image,'/scripts/test_image.sh']
|
|
results=[]
|
|
for case in ['old-counterexample','roundtrip','complete-scope-refusal','partial-failure','symlink-refusal','fsgroup-modes','mode-drift','hash-drift']:
|
|
q=subprocess.run(prefix+[case],capture_output=True,timeout=60)
|
|
results.append({'case':case,'returncode':q.returncode})
|
|
(p/'image-tests.json').write_text(json.dumps({'image':image,'result':'passed' if len(results)==8 and all(x['returncode']==0 for x in results) else 'unverified','cases':results,'native_mutation':False},indent=2)+'\n')
|
|
print(json.dumps(results[-1]),flush=True)
|
|
if q.returncode:
|
|
print('test failed; raw output withheld');raise SystemExit(1)
|