barecheck
Version:
Barecheck core Node.js library
41 lines • 2.24 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCoverageReportBody = void 0;
const buildTableRow = ({ file, lines, url }) => {
const getChangesLink = (lineLines) => `${url}${lineLines}`;
// TODO: find a way to get diff patch
// `https://github.com/${owner}/${repo}/pull/${pullRequestNumber}/files#diff-${sha}${lines}`;
const buildArrayLink = (lineLines) => {
const href = getChangesLink(`#L${lineLines[0]}-L${lineLines[1]}`);
const text = lineLines.join('-');
return `<a href="${href}">${text}</a>`;
};
const buildLink = (line) => `<a href="${getChangesLink(`#L${line}`)}">${line}</a>`;
const buildUncoveredLines = (line) => Array.isArray(line) ? buildArrayLink(line) : buildLink(line);
const formattedlines = lines.map(buildUncoveredLines).join(', ');
const formattedFile = `<a href="${getChangesLink('')}">${file}</a>`;
return `<tr><td>${formattedFile}</td><td>${formattedlines}</td></tr>`;
};
const buildDetailsBlock = (changedFiles) => {
if (changedFiles.length === 0)
return '✅ All code changes are covered';
const summary = '<summary>Uncovered files and lines</summary>';
const tableHeader = '<tr><th>File</th><th>Lines</th></tr>';
const tableBody = changedFiles.map(buildTableRow).join('');
const table = `<table><tbody>${tableHeader}${tableBody}</tbody></table>`;
return `<details>${summary}${table}</details>`;
};
const getCoverageReportBody = ({ changedFiles, title, coverageDiff, totalCoverage }) => {
const coverageDiffOutput = coverageDiff < 0 ? '▾' : '▴';
const trendArrow = coverageDiff === 0 ? '' : coverageDiffOutput;
const header = `${title}`;
const detailsWithChangedFiles = buildDetailsBlock(changedFiles);
const descTotal = `Total: <b>${totalCoverage}%</b>`;
const descCoverageDiff = `Your code coverage diff: <b>${coverageDiff}% ${trendArrow}</b>`;
const description = `${descTotal}\n\n${descCoverageDiff}`;
const body = `<h3>${header}</h3>${description}\n\n${detailsWithChangedFiles}`;
return body;
};
exports.getCoverageReportBody = getCoverageReportBody;
exports.default = exports.getCoverageReportBody;
//# sourceMappingURL=coverage.js.map
;