fix(coverage): exempt .d.ts files from diff coverage gate
Ambient declaration files have no runtime code so v8 coverage never generates DA records for them. Without an allowlist entry, coverage:diff reports no-coverage-data for every .d.ts in the diff. Add /\.d\.ts$/ to ALLOWED_GLOBS with a companion test. Also configure @vitest/coverage-v8 for core-shared and add targeted vitest exclusions for infrastructure files that are not unit-testable (DI symbols, interface files, tRPC context, Sentry SDK init) — bringing core-shared into the L2 aggregate and making the L1 diff gate enforce coverage on new executable code. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -62,6 +62,7 @@ const ALLOWED_GLOBS = [
|
||||
/\/integrations\/cms\//,
|
||||
/\/ui\//,
|
||||
// Pure type-alias / interface files (no executable code)
|
||||
/\.d\.ts$/, // ambient declaration files — no runtime code by definition
|
||||
/\.interface\.ts$/,
|
||||
/\/index\.ts$/, // barrel re-exports — no executable code
|
||||
// Build artifacts
|
||||
|
||||
@@ -154,6 +154,23 @@ describe("computeDiffCoverage", () => {
|
||||
assert.equal(result.summary.filesChanged, 4);
|
||||
});
|
||||
|
||||
test("skips TypeScript ambient declaration files (.d.ts)", () => {
|
||||
const lcov = parseLcov(lcovText);
|
||||
const diff = new Map([
|
||||
// Ambient declaration files have no runtime code — v8 coverage never
|
||||
// sees them, so they must be exempted from the no-coverage-data gate.
|
||||
[
|
||||
"packages/core-shared/src/payload/payload-custom-ambient.d.ts",
|
||||
new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
|
||||
],
|
||||
["packages/foo/src/bar/some-types.d.ts", new Set([1, 2])],
|
||||
]);
|
||||
const result = computeDiffCoverage(diff, lcov);
|
||||
assert.equal(result.status, "pass");
|
||||
assert.equal(result.summary.filesGated, 0);
|
||||
assert.equal(result.summary.filesChanged, 2);
|
||||
});
|
||||
|
||||
test("skips .env template files (.env, .env.example, .env.local)", () => {
|
||||
const lcov = parseLcov(lcovText);
|
||||
const diff = new Map([
|
||||
|
||||
Reference in New Issue
Block a user