test(state): #133 — pin the #107 legacy-name shim (and its fail-closed gate)
All checks were successful
Check / eval (push) Successful in 4m9s
All checks were successful
Check / eval (push) Successful in 4m9s
mkFlake prefers state.json and still accepts the legacy theme-state.json, because a machine only migrates on its next menu write. Nothing evaluated a checkout carrying ONLY the legacy name, so the shim could rot with every check green — breaking rebuilds for precisely the users who have not opened the menu since #107, i.e. the ones least likely to see it coming. checks.state-legacy-name evaluates two fixtures: legacy-only must resolve, and no-state-at-all must still throw. The gate is half the shim's contract (it turns "no state file" into one readable error instead of a readFile stack from inside the module system) and was equally unpinned. Cheap by construction: mkFlake wraps its return in `builtins.seq _themeState`, so forcing the attrset forces the state read and nothing else — no module system, no home.nix. Hence a one-file fixture and no measurable cost (flake check still ~35s). That file is a SYMLINK to the shipped template's state.json: a copy would drift and the check would quietly start testing a fossil. The fixture also asserts it has no state.json, or it would pass while testing nothing. Both assertions proven by breaking lib.nix — deleting the fallback, then defeating the gate — and watching each fail by name. Delete this check together with the shim and the nomarchy-theme-sync alias. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1
checks/fixtures/legacy-state/theme-state.json
Symbolic link
1
checks/fixtures/legacy-state/theme-state.json
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../templates/downstream/state.json
|
||||
5
checks/fixtures/no-state/README.md
Normal file
5
checks/fixtures/no-state/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
Deliberately empty: a checkout with **neither** `state.json` nor the legacy
|
||||
`theme-state.json`. `checks.state-legacy-name` asserts `mkFlake` fails closed
|
||||
here — the fail-closed gate in `lib.nix` is what turns "you have no state file"
|
||||
into one readable error instead of a raw `readFile` stack from deep inside the
|
||||
module system.
|
||||
Reference in New Issue
Block a user