#!/usr/bin/env bash # update-goldens.sh — 在权威环境(Linux 容器)重生成 golden 基线。 # # 为什么必须容器:golden 是「真实渲染截图」,Linux 与 mac 渲染(字体/抗锯齿)不一致。 # 必须钉死一个权威环境统一生成 + CI 校验,否则 CI(Linux)对着 mac 生成的基线必全红。 # 本仓库权威环境 = CI 同款镜像 ghcr.io/cirruslabs/flutter:stable。 # 开发者改了 UI 后用本脚本(而非裸 mac `--update-goldens`)刷新基线,保持与 CI 一致。 # # 用法: bash scripts/update-goldens.sh # 依赖: docker # 之后: git add client/test/golden/goldens && 提交(基线随代码进版本库)。 # # ⚠️ 启用 golden CI 硬闸的前置(见 docs/test-architecture.html L3): # ① 在有 docker 的机器跑本脚本,提交一套 Linux 权威基线; # ② stats-overhaul 等在制工作区合并、基线落定后; # 再在 .gitea/workflows/ci.yml 加 `flutter test test/golden` job 转阻塞。 set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" if ! docker info >/dev/null 2>&1; then echo "✗ 需要 docker(权威 Linux 渲染环境)。本机无 docker 时无法生成与 CI 一致的基线。" >&2 exit 1 fi echo "→ 在 ghcr.io/cirruslabs/flutter:stable 重生成 golden 基线 ..." docker run --rm -v "$ROOT/client:/app" -w /app \ ghcr.io/cirruslabs/flutter:stable \ bash -c "flutter pub get && flutter test --update-goldens test/golden" echo "✓ golden 基线已在 Linux 权威环境重生成。" echo " 下一步:git add client/test/golden/goldens && 提交。"