in x-test.js [1170:1214]
static analyzeHrefCoverage(coverageValue, href, goal) {
const set = new Set();
let text = '';
for (const item of coverageValue ?? []) {
if (item.url === href) {
text = item.text;
for (const range of item.ranges) {
for (let i = range.start; i < range.end; i++) {
set.add(i);
}
}
}
}
const ranges = [];
const state = { used: set.has(0), start: 0 };
for (let index = 0; index < text.length; index++) {
const used = set.has(index);
if (used !== state.used) {
ranges.push({ used: state.used, start: state.start, end: index });
Object.assign(state, { used, start: index });
}
}
ranges.push({ used: state.used, start: state.start, end: text.length });
let output = '';
let lineNumber = 1;
for (const range of ranges) {
let lines = text
.slice(range.start, range.end)
.split('\n')
.map((line, iii) => lineNumber === 1 || iii > 0 ? `${String(lineNumber++ + (range.used ? '' : ' !')).padEnd(8, ' ')}| ${line}` : line);
if (range.used) {
if (lines.length > 3) {
lines = [...lines.slice(0, 1), '\u2026', ...lines.slice(-1)];
}
} else {
if (lines.length > 5) {
lines = [...lines.slice(0, 2), '\u2026', ...lines.slice(-2)];
}
}
output += range.used ? `${lines.join('\n')}` : `${lines.join('\n')}`;
}
const percent = set.size / text.length * 100;
const ok = percent >= goal;
return { ok, percent, output };
}