58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
/*
|
|
Copyright 2012-2015, Yahoo Inc.
|
|
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
|
|
*/
|
|
'use strict';
|
|
|
|
function TextSummaryReport(opts) {
|
|
opts = opts || {};
|
|
this.file = opts.file || null;
|
|
}
|
|
|
|
function lineForKey(summary, key) {
|
|
const metrics = summary[key];
|
|
|
|
key = key.substring(0, 1).toUpperCase() + key.substring(1);
|
|
if (key.length < 12) {
|
|
key += ' '.substring(0, 12 - key.length);
|
|
}
|
|
const result = [
|
|
key,
|
|
':',
|
|
metrics.pct + '%',
|
|
'(',
|
|
metrics.covered + '/' + metrics.total,
|
|
')'
|
|
].join(' ');
|
|
const skipped = metrics.skipped;
|
|
if (skipped > 0) {
|
|
return result + ', ' + skipped + ' ignored';
|
|
}
|
|
return result;
|
|
}
|
|
|
|
TextSummaryReport.prototype.onStart = function(node, context) {
|
|
const summary = node.getCoverageSummary();
|
|
const cw = context.writer.writeFile(this.file);
|
|
const printLine = function(key) {
|
|
const str = lineForKey(summary, key);
|
|
const clazz = context.classForPercent(key, summary[key].pct);
|
|
cw.println(cw.colorize(str, clazz));
|
|
};
|
|
|
|
cw.println('');
|
|
cw.println(
|
|
'=============================== Coverage summary ==============================='
|
|
);
|
|
printLine('statements');
|
|
printLine('branches');
|
|
printLine('functions');
|
|
printLine('lines');
|
|
cw.println(
|
|
'================================================================================'
|
|
);
|
|
cw.close();
|
|
};
|
|
|
|
module.exports = TextSummaryReport;
|