Files
cms-SiteForge/scripts/verify_release.py
T
浅念 8884e100f9 upgrade: adopt V8.31.1 (theme 1.3/1.4 redesigns, editor deep-canvas, guided launch, component library)
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>
2026-10-26 09:43:17 +08:00

26 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Fast static checks before producing an official release archive."""
from pathlib import Path
import re
import subprocess
import sys
ROOT=Path(__file__).resolve().parent.parent
sys.path.insert(0,str(ROOT))
from app.version import VERSION
assert VERSION=='8.31.0-dev.1'
api=(ROOT/'app'/'main.py').read_text(encoding='utf-8')
assert 'return builder.build(' not in api, 'A synchronous request-thread build has reappeared'
assert "@app.post('/api/sites/{site_id}/builds', status_code=202)" in api
assert 'VERSION' in api
for name in ('automotive','industrial','corporate','minimal'):
theme=ROOT/'themes'/name
manifest=theme/'manifest.json'
assert manifest.is_file() and (theme/'pro.html').is_file()
assert len(list((theme/'pages').glob('*.html')))>=14
for file in (ROOT/'requirements.lock',ROOT/'requirements-dev.lock'):
pins=[ln for ln in file.read_text(encoding='utf-8').splitlines() if ln and not ln.startswith('#')]
assert pins and all(re.fullmatch(r'[a-zA-Z0-9_.-]+==[0-9][a-zA-Z0-9_.!+\-]*',ln) for ln in pins)
assert (ROOT/'.github/workflows/ci.yml').is_file()
for file in (ROOT/'app/static').glob('*.js'):
subprocess.run(['node','--check',str(file)],check=True)
print('PASS: version, 4× themes, worker route, pinned dependencies, CI workflow, JS syntax')