25 lines
1.7 KiB
Python
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)))
|