修复 Studio 失败测试并新增合并门禁
把丢失的 box 录像放回 apps/studio/tests/data/,修掉第 3 节 3–10 号与两处过时测试桩, 注册 timing 标记并让根目录收集零错误;新增 tools/gate.ps1 与可选的 pre-push 钩子。 验证:studio 524 通过 19 跳过、shared 467 通过 18 跳过、ui_check 632 项 0 失败、gate.ps1 退出码 0。 细节见 docs/test-repair-plan.zh.md。
This commit is contained in:
@@ -12,7 +12,7 @@ Both shipped apps are **PySide6** — Qt's **LGPLv3** binding. PyQt5's free opti
|
||||
**GPLv3-or-commercial**, which is why the studio was migrated off it: a closed-source
|
||||
product would otherwise need a licence purchase. The rule is enforced, not just
|
||||
documented: neither app may import PyQt5/PyQt6/PySide2, and `shared/` (used by both) may
|
||||
import PySide6 and nothing else. See `apps/studio/tests/test_binding_purity.py` and
|
||||
import PySide6 and nothing else. See `apps/studio/tests/test_studio_binding_purity.py` and
|
||||
`apps/autocal/tests/test_binding_purity.py`.
|
||||
|
||||
One practical consequence: `pyqtgraph` binds to whichever toolkit it imports first, so a
|
||||
@@ -109,6 +109,37 @@ mechanically enforced.
|
||||
why recording and calibration sampling no longer hang off the UI refresh timer,
|
||||
and for the data-reliability fixes that came with it.
|
||||
|
||||
### The merge gate
|
||||
|
||||
One command runs everything a change must not break, and it is the only check that
|
||||
is meant to be unskippable:
|
||||
|
||||
```powershell
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File tools\gate.ps1
|
||||
```
|
||||
|
||||
It runs `tools/lint_gate.py` over the changed files, the full studio suite, the full
|
||||
shared suite, and `ui_check.py`; writes each one's output to
|
||||
`.scratch/gate/gate-<run-id>/`; and holds the run to three contracts — an **empty**
|
||||
`tools/known_failures.txt`, the skip ceilings and collection floors in
|
||||
`tools/skip_budget.txt`, and zero findings anywhere. It exits 0 only when all of
|
||||
that holds.
|
||||
|
||||
The **gate platform is Windows**: the suites render real Qt widgets offscreen, and two
|
||||
checks are platform-sensitive ([`docs/test-repair-plan.zh.md`](docs/test-repair-plan.zh.md)
|
||||
§3 #11 and #13), so a green Linux run is not the same statement.
|
||||
|
||||
An optional `pre-push` hook calls it, so a failing gate blocks the push. It is
|
||||
deliberately not installed for you:
|
||||
|
||||
```powershell
|
||||
git config core.hooksPath .githooks # enable; `git config --unset core.hooksPath` disables
|
||||
```
|
||||
|
||||
Day-to-day development still uses targeted test runs
|
||||
([`docs/test-execution-plan.zh.md`](docs/test-execution-plan.zh.md)); the gate is what
|
||||
runs before a change is committed or handed over.
|
||||
|
||||
## Branding
|
||||
|
||||
Window / EXE icon: `shared/resources/branding/logo.png`
|
||||
|
||||
Reference in New Issue
Block a user