Files

25 lines
1.7 KiB
Python

from pathlib import Path
import subprocess,json,re,hashlib
ROOT=Path(__file__).resolve().parents[5];P=ROOT/'agents/rocko/work/queue-219';OUT=P/'r6'
files=sorted(ROOT.glob('packages/*/tests/**/*'))+sorted(ROOT.glob('scripts/test-*.sh'))
files=[f for f in files if f.is_file()]
texts={f:f.read_text(errors='replace') for f in files}
rows=[]
for path in (P/'changed-paths.txt').read_text().splitlines()+['packages/webui/src/public/bus.js']:
base=Path(path).name;hits=[]
for f,text in texts.items():
for n,line in enumerate(text.splitlines(),1):
if path in line or base in line:hits.append(dict(file=str(f.relative_to(ROOT)),line=n,text=line))
rows.append(dict(path=path,hits=hits))
pins=[]
for f,text in texts.items():
for n,line in enumerate(text.splitlines(),1):
if re.search(r'(?<![0-9a-f])[0-9a-f]{64}(?![0-9a-f])',line):pins.append(dict(file=str(f.relative_to(ROOT)),line=n,text=line))
control=ROOT/'packages/bus/tests/channel-proof.test.mjs';t=control.read_text()
m=re.search(r'"packages/webui/src/bus.mjs": "([0-9a-f]{64})"',t);assert m
assert hashlib.sha256((ROOT/'packages/webui/src/bus.mjs').read_bytes()).hexdigest()==m[1]
assert subprocess.check_output(['git','diff','2efd127ce','HEAD','--','packages/webui/src/public/bus.js'],cwd=ROOT)==b''
report=dict(head=subprocess.check_output(['git','rev-parse','HEAD'],cwd=ROOT,text=True).strip(),paths=rows,hexPins=pins,positiveControl=dict(file=str(control.relative_to(ROOT)),pin='packages/webui/src/bus.mjs',sha256=m[1],matches=True),busJsUnchanged=True)
(OUT/'reader-audit.json').write_text(json.dumps(report,indent=2)+'\n')
print(json.dumps(dict(paths=len(rows)-1,additionalBusJs=True,readerHits=sum(len(x['hits']) for x in rows),hexPinLines=len(pins),positiveControl=True,busJsUnchanged=True)))