mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-10 12:47:04 +00:00
The guard recognised meta/services.yml as the only place a git URL may be declared.84a4b04f0made meta/addons/<id>.yml the one place a Discourse plugin pins itself, so the addon files now carry the clone URL literally, and _iter_role_files picks up every .yml under the role: each declaration reported itself as an undeclared reference. Two halves. The declaration set is now the union over meta/services.yml and every meta/addons/*.yml, so an addon pin legitimises that URL for the whole role, not just for the file holding it. Path.glob on a missing meta/addons yields nothing, so roles without addons need no special case. The self-skip that kept services.yml out of the scan is now a membership test against exactly those declaration paths. Scope stays per role: declared is rebuilt inside the role loop, so a declaration in one role legitimises nothing in another. The failure message and the docstring name both sites, otherwise they send the next reader to the wrong file. This is the test-side counterpart ofe4141cb826, which taught collect_entries to see the same addon refs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Tests 🧪
All automated tests for Infinito.Nexus live here.
| Directory | Type | Guide |
|---|---|---|
unit/ |
Unit tests (isolated, no I/O) | unit.md |
integration/ |
Integration tests (real component boundaries) | integration.md |
external/ |
Opt-in live third-party checks, excluded from make test |
external.md |
e2e/ |
End-to-end Playwright tests | playwright.md |
regression/ |
Regression guard rules | regression.md |
lint/ |
Structural lint checks | lint.md |
Run each suite via the make targets documented in the linked guides.