# -*- coding: utf-8 -*- r'''本地渲染官网,检查内容完整性 + 生成预览文件。 用法:python _build/test_site_render.py ''' from __future__ import annotations import re import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent sys.path.insert(0, str(ROOT / "relay")) import landing # noqa: E402 # 模拟 _list_downloads() 的返回 FILES = [ {"name": "ykxmz-setup-1.7.1.exe", "size": 15063814, "mtime": 1}, {"name": "ykxmz-server-1.7.1.zip", "size": 194633, "mtime": 1}, {"name": "ykxmz-watch-1.7.1.apk", "size": 201523, "mtime": 1}, {"name": "ykxmz-watch-1.7.1-说明.txt", "size": 1875, "mtime": 1}, ] passed = 0 failed = 0 def check(name, ok, detail=""): global passed, failed if ok: passed += 1 print(" [PASS] " + name) else: failed += 1 print(" [FAIL] " + name + " " + str(detail)) def main() -> int: html = landing.render_site(FILES) print(" 渲染 %d 字符" % len(html)) print() print("一、结构完整") for label, needle in ( ("DOCTYPE", ""), ("语言 zh-CN", 'lang="zh-CN"'), ("吸顶导航", "nav-in"), ("Hero 标题", "老师抬一下手腕"), ("功能网格", 'id="features"'), ("三步上手", 'id="how"'), ("下载区", 'id="download"'), ("FAQ", 'id="faq"'), ("页脚", "foot-in"), ("响应式 viewport", "width=device-width")): check(label, needle in html) print() print("二、内容数量") feats = len(re.findall(r'class="feat"', html)) steps = len(re.findall(r'class="step"', html)) dls = len(re.findall(r'class="dl-card"', html)) faqs = len(re.findall(r'
= 11, "实际 %d" % html.count(" %s" % out.name) print() print("=" * 58) print("通过 %d 项,失败 %d 项" % (passed, failed)) return 0 if failed == 0 else 1 if __name__ == "__main__": sys.exit(main())