test-file-coverage
Verifiser at hver kildefil har en tilhørende testfil.
Regeldetaljer
Section titled “Regeldetaljer”Utestet kode er en risiko. Denne regelen håndhever en strukturell konvensjon: for hver fil i src/ må en matchende .test.ts-fil finnes i tests/. Den bruker ctx.glob for å oppdage eksisterende testfiler, bygger et oppslagssett for rask matching, og rapporterer enhver kildefil uten en motpart.
Eksempler på feil kode
Section titled “Eksempler på feil kode”src/ helpers/ log.ts ← has a test ✓ paths.ts ← no test file ✗tests/ helpers/ log.test.tsEksempler på riktig kode
Section titled “Eksempler på riktig kode”src/ helpers/ log.ts paths.tstests/ helpers/ log.test.ts paths.test.tsRegelimplementasjon
Section titled “Regelimplementasjon”/// <reference path="../rules.d.ts" />import { relative } from "node:path";
export default { rules: { "test-file-exists": { description: "Every source file should have a corresponding test file", severity: "warning", async check(ctx) { for (const file of ctx.scopedFiles) { const rel = relative(ctx.projectRoot, file); const testPath = rel .replace(/^src\//, "tests/") .replace(/\.ts$/, ".test.ts"); const testFiles = await ctx.glob(testPath); if (testFiles.length === 0) { ctx.report.warning({ message: `No test file found at ${testPath}`, file, fix: `Create a test file at ${testPath}`, }); } } }, }, },} satisfies RuleSet;For å tilpasse til prosjekter som plasserer tester ved siden av kildefilene:
const testPath = rel.replace(/\.ts$/, ".test.ts");// src/helpers/log.ts → src/helpers/log.test.tsNår du bør bruke den
Section titled “Når du bør bruke den”Når teamet ditt følger en konvensjon om at hver kildemodul må ha en tilhørende testfil, og du ønsker å fange opp manglende tester under kodegjennomgang.
Når du ikke bør bruke den
Section titled “Når du ikke bør bruke den”Når testdekning spores på andre måter (f.eks. dekningsgrenser i CI), eller når noen kildefiler genuint ikke trenger tester (kun-type-filer, konstanter).