Files
jason.woltje 068d868a99 lead: commit rocko's untracked evidence (4471 files: queue-124 queue-129 queue-171 queue-178 queue-280 queue-31 queue-84 queue-85 queue-94)
Unclaimed files left in the canonical checkout. Inventory: canonical-cleanup-inventory.md (commit-as-evidence groups). detect-secrets scan clean on 2026-11-02: hits are sha256 pins, git object ids, test sentinels already in tracked tests and unit-file lines.
2026-11-02 15:05:15 -06:00

22 lines
1.6 KiB
Python

import os,sys,subprocess,signal,time,json,re
from pathlib import Path
root=Path(__file__).resolve().parents[4]
packet=Path(__file__).resolve().parent
name=sys.argv[1]; command=sys.argv[2:]
assert Path(subprocess.check_output(['git','rev-parse','--show-toplevel'],cwd=root,text=True).strip()).resolve() == root
for arg in command:
if arg.endswith('.test.mjs'): assert (root/arg).is_file(), arg
start=time.time(); timed_out=False
p=subprocess.Popen(command,cwd=root,env=os.environ.copy(),stdout=subprocess.PIPE,stderr=subprocess.STDOUT,start_new_session=True)
try: out=p.communicate(timeout=180)[0]
except subprocess.TimeoutExpired:
timed_out=True;os.killpg(p.pid,signal.SIGKILL);out=p.communicate()[0]
text=out.decode(errors='replace');(packet/'logs').mkdir(exist_ok=True);(packet/'logs'/f'{name}.log').write_text(text)
counts={k:int(v) for k,v in re.findall(r'^# (tests|pass|fail|skipped|cancelled) (\d+)$',text,re.M)}
result={'step':name,'start':time.strftime('%Y-%m-%dT%H:%M:%SZ',time.gmtime(start)),'end':time.strftime('%Y-%m-%dT%H:%M:%SZ',time.gmtime()),'seconds':round(time.time()-start,3),'exit':p.returncode,'timeout':timed_out,'counts':counts,'command':command}
f=packet/'results.json'; rows=json.loads(f.read_text()) if f.exists() else []; rows.append(result);f.write_text(json.dumps(rows,indent=2)+'\n');print(json.dumps(result),flush=True);print(text[-4500:],flush=True)
if name.startswith('red-') or name.startswith('M'):
expected=p.returncode==1 and not timed_out and 'ERR_ASSERTION' in text and counts.get('fail',0)>0
print('EXPECTED_ASSERTION_RED',expected);sys.exit(0 if expected else 1)
sys.exit(p.returncode if not timed_out else 124)