ci: make coverage filters path-exact

This commit is contained in:
Tianyi Cui
2026-07-21 23:45:35 +08:00
parent e887c0f7c0
commit 53a9459609
2 changed files with 8 additions and 3 deletions

View File

@@ -28,11 +28,14 @@ describe('coverage shards', () => {
it.each(coverageShards)('selects tests and source includes for $name', (shard) => {
const args = coverageArgs(shard.name)
for (const packageRoot of shard.packageRoots) {
expect(args).toContain(`packages/${packageRoot}`)
expect(args).toContain(`packages/${packageRoot}/`)
expect(args).toContain(packageRoot.includes('/')
? `--coverage.include=packages/${packageRoot}/src/**/*.ts`
: `--coverage.include=packages/${packageRoot}/*/src/**/*.ts`)
}
if ('extraTestRoots' in shard) {
for (const testRoot of shard.extraTestRoots) expect(args).toContain(`${testRoot}/`)
}
expect(args).toContain('scripts/test-invariants.spec.ts')
expect(new Set(args).size).toBe(args.length)
})

View File

@@ -98,9 +98,11 @@ export function coverageArgs(name: string): string[] {
throw new Error(`run-gates: unknown DSH_COVERAGE_SHARD ${JSON.stringify(name)}.`)
}
// Vitest positional filters are substrings; the trailing separator keeps
// prefix-named sibling packages out of each lane.
const testRoots = new Set([
...shard.packageRoots.map(packageRoot => `packages/${packageRoot}`),
...('extraTestRoots' in shard ? shard.extraTestRoots : []),
...shard.packageRoots.map(packageRoot => `packages/${packageRoot}/`),
...('extraTestRoots' in shard ? shard.extraTestRoots.map(testRoot => `${testRoot}/`) : []),
'scripts/test-invariants.spec.ts',
])
return [