8884e100f9
Overlay 190 upstream items (V8.22→8.31) preserving trade-pro theme, registry tests, and design docs. Re-applied full patch set on identical anchors (discovery/env_for/blocks.css/type-mapping/locale-override/ theme_color/frontend entries/test_theme_pro_v3 mods) plus compose pins. Verified: theme suites 35/35; dual-baseline full run 415 passed vs pristine 386+29 ours, FAILED-set diff EMPTY (same 10 Windows env fails). Live: container 8.31.1-dev.1 healthy, hesupipe 192 entries intact, trade-pro build 203 pages 0 errors. Co-Authored-By: Claude Code <noreply@anthropic.com>
32 lines
1.7 KiB
Python
32 lines
1.7 KiB
Python
"""Resumable isolated regression with explicit groups and truthful partial status."""
|
|
import argparse,datetime,json,subprocess,sys,time
|
|
from pathlib import Path
|
|
ROOT=Path(__file__).resolve().parents[1]
|
|
def main():
|
|
ap=argparse.ArgumentParser()
|
|
ap.add_argument('--start',type=int,default=1)
|
|
ap.add_argument('--end',type=int,default=999)
|
|
ap.add_argument('--timeout',type=int,default=40)
|
|
ap.add_argument('--group-size',type=int,default=2)
|
|
a=ap.parse_args()
|
|
fs=sorted((ROOT/'tests').glob('test_*.py'))
|
|
groups=[fs[i:i+a.group_size] for i in range(0,len(fs),a.group_size)]
|
|
directory=ROOT/'reports/v830-regression';directory.mkdir(parents=True,exist_ok=True)
|
|
for i,g in enumerate(groups,1):
|
|
if i<a.start or i>a.end:continue
|
|
start=time.monotonic();command=[sys.executable,'-m','pytest','-q',*[str(f.relative_to(ROOT)) for f in g]]
|
|
try:
|
|
r=subprocess.run(command,cwd=ROOT,capture_output=True,text=True,timeout=a.timeout)
|
|
output=r.stdout+'\n'+r.stderr
|
|
status='passed' if r.returncode==0 else 'failed'
|
|
except subprocess.TimeoutExpired as exc:
|
|
output=(exc.stdout.decode(errors='replace') if isinstance(exc.stdout,bytes) else (exc.stdout or ''))+'\nTIMEOUT'
|
|
status='timeout'
|
|
log=directory/f'batch-{i:02}.log';log.write_text(output,encoding='utf-8')
|
|
record={'batch':i,'modules':[f.name for f in g],'status':status,'elapsed':round(time.monotonic()-start,2),'summary':output[-500:]}
|
|
(directory/f'batch-{i:02}.json').write_text(json.dumps(record,ensure_ascii=False,indent=2),encoding='utf-8')
|
|
print(i,len(groups),status,record['elapsed'],','.join(record['modules']),flush=True)
|
|
if status!='passed':return 1
|
|
return 0
|
|
if __name__=='__main__':raise SystemExit(main())
|