@code-pushup/coverage-plugin
Version:
Code PushUp plugin for tracking code coverage ☂
39 lines • 1.66 kB
JavaScript
import { executeProcess, formatAsciiTable, logger, pluralizeToken, } from '@code-pushup/utils';
import { slugToTitle } from '../format.js';
import { lcovResultsToAuditOutputs } from './lcov/lcov-runner.js';
export function createRunnerFunction(config) {
return async () => {
const { reports, coverageToolCommand, continueOnCommandFail, coverageTypes, } = config;
// Run coverage tool if provided
if (coverageToolCommand == null) {
logger.info('No test command provided, assuming coverage has already been collected');
}
else {
logger.info('Executing test command to collect coverage ...');
const { command, args } = coverageToolCommand;
try {
await executeProcess({ command, args });
}
catch {
if (!continueOnCommandFail) {
throw new Error('Running coverage tool failed. Make sure all your tests are passing.');
}
}
}
// Calculate coverage from LCOV results
const auditOutputs = await lcovResultsToAuditOutputs(reports, coverageTypes);
logAuditOutputs(auditOutputs);
return auditOutputs;
};
}
function logAuditOutputs(auditOutputs) {
logger.info(`Transformed LCOV reports to ${pluralizeToken('audit output', auditOutputs.length)}`);
logger.info(formatAsciiTable({
columns: ['left', 'right'],
rows: auditOutputs.map(audit => [
`• ${slugToTitle(audit.slug)}`,
`${audit.value.toFixed(2)}%`,
]),
}, { borderless: true }));
}
//# sourceMappingURL=runner.js.map