UNPKG

@code-pushup/coverage-plugin

Version:
57 lines 2.13 kB
import { createRequire } from 'node:module'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { capitalize } from '@code-pushup/utils'; import { coveragePluginConfigSchema, } from './config.js'; import { createRunnerConfig } from './runner/index.js'; import { coverageDescription, coverageTypeWeightMapper } from './utils.js'; /** * Instantiates Code PushUp code coverage plugin for core config. * * @example * import coveragePlugin from '@code-pushup/coverage-plugin' * * export default { * // ... core config ... * plugins: [ * // ... other plugins ... * await coveragePlugin({ * reports: [{ resultsPath: 'coverage/cli/lcov.info', pathToProject: 'packages/cli' }] * }) * ] * } * * @returns Plugin configuration. */ export async function coveragePlugin(config) { const coverageConfig = coveragePluginConfigSchema.parse(config); const audits = coverageConfig.coverageTypes.map((type) => ({ slug: `${type}-coverage`, title: `${capitalize(type)} coverage`, description: coverageDescription[type], })); const group = { slug: 'coverage', title: 'Code coverage metrics', description: 'Group containing all defined coverage types as audits.', refs: audits.map(audit => ({ ...audit, weight: coverageTypeWeightMapper[audit.slug.slice(0, audit.slug.indexOf('-'))], })), }; const runnerScriptPath = path.join(fileURLToPath(path.dirname(import.meta.url)), '..', 'bin.js'); const packageJson = createRequire(import.meta.url)('../../package.json'); return { slug: 'coverage', title: 'Code coverage', icon: 'folder-coverage-open', description: 'Official Code PushUp code coverage plugin.', docsUrl: 'https://www.npmjs.com/package/@code-pushup/coverage-plugin/', packageName: packageJson.name, version: packageJson.version, audits, groups: [group], runner: await createRunnerConfig(runnerScriptPath, coverageConfig), }; } //# sourceMappingURL=coverage-plugin.js.map