Commit ce3ea06
feat(pm): hold the in-tree fixture-root ignore rule as a class, not two named paths (#12830)
The dispatch derivation reads untracked files on purpose, so the ignore rules
are the only thing between a killed test run's leftover fixture and every
seat's gate list. The self-test pinned that property for two paths by name; a
fifth fixture author picking a new in-tree root reproduced the hazard exactly
and nothing went red.
Sweep the tracked sources for the directories they create, resolve each base
expression against the repo root, and ask `git check-ignore` about a
representative leftover at every in-tree one. A site whose base cannot be
resolved is reported rather than skipped, and for `mkdtempSync` — the shape
every in-tree fixture in this tree is built from — it fails: a detector that
silently dropped what it could not read would be the same defect one level up.
Two escapes, both derived from the tree rather than declared: a covering rule
that lives in a tracked ignore file (one in `.git/info/exclude` covers its own
clone and nobody else's), and a directory git already tracks content under.
No count is asserted anywhere — the family inventory grows same-day. What is
asserted is non-emptiness, so a sweep that found nothing cannot satisfy
"every root is covered" by finding no roots.
Claude-Session: https://claude.ai/code/session_01PfaSTikked61BkcsB5Rn69
Co-authored-by: Claude <noreply@anthropic.com>1 parent 5ced18a commit ce3ea06
1 file changed
Lines changed: 693 additions & 0 deletions
0 commit comments