fix(check-coverage): install the extension deps the root sweep needs - #1244
Merged
jayminwest merged 1 commit intoSep 4, 2026
Merged
Conversation
…(warren-fe72, jayminwest#1236) Root `bun test` sweeps extensions/**, and those imports resolve only against each package's own node_modules, so a checkout with nothing but a root install failed the gate on a module error and skipped 32 tests. The frozen install that check:extensions gained in jayminwest#1226 is extracted as ensureInstalled and called from check-coverage before the sweep, so both guards repair a checkout the same way.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1236.
What breaks
check:coveragespawns rootbun test, which sweepsextensions/**/*.test.ts. Those files import packages declared only in each extension's own manifest, so a checkout that has run nothing butbun installfails on resolution instead of on a defect.Thirty-two extension tests never ran.
Scope, narrower than the issue reads
#1226 moved this before I started.
lintis the first gate in the manifest and it runscheck-extensions.ts, which installs any package declaringtypecheckorlint. All six declaretypecheck, sobun run check:allon a fresh clone already repairs itself. What is left is the gate standing on its own, and any extension that later ships tests without declaring those two scripts.The change
I took the shared helper rather than a copy of the step.
check-extensions.tsexportsensureInstalled,check-coverage.tscalls it throughinstallExtensionDepsbefore the sweep, andExtensionPlangainedhasDependenciesso a package declaring nothing is left alone. A frozen install that fails now fails the gate with its own output, instead of letting the sweep die on a module error further down.ci-parity-config.jsonsaid the guard repairs a missing install itself. That held for thelintpath only, so the rationale names both consumers now.Same clean clone, after:
6935 against 6898 is the 32 extension tests plus the 5 this PR adds.
Gates
Container clone of
0469c13onoven/bun:1.3.14.bun run check:allgives 11 of 12 with the patch, and 11 of 12 on cleanmainin the same container, red on the same gate with the same signature:kubectlis absent there, which is what those two want. I compared the failure sets rather than the counts, and they match exactly.That revises what I reported on #1186 a few days ago:
check:dupsandcheck:depsboth pass onmainnow, socheck:coverageis the only gate still red.What I left out
The issue asks for a clean-clone regression expecting green, and it cannot pass while
deploy-trigger.test.tsis red. The preflight is unit-tested against a fake spawn instead. A real clone-and-install case would cost minutes against a suite that finishes in 42 seconds and would want network and disk the rest of the tests do not, so I would rather put it behind an env guard than in the default sweep. Happy to add it if you want it.check-all.tsand the workflow files are untouched.