forked from rtfpessoa/diff2html
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfile-list-printer.js
93 lines (82 loc) · 3.42 KB
/
file-list-printer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*
*
* FileListPrinter (file-list-printer.js)
* Author: nmatpt
*
*/
(function() {
var printerUtils = require('./printer-utils.js').PrinterUtils;
var Utils = require('./utils.js').Utils;
var hoganUtils;
var baseTemplatesPath = 'file-summary';
var iconsBaseTemplatesPath = 'icon';
function FileListPrinter(config) {
this.config = config;
var HoganJsUtils = require('./hoganjs-utils.js').HoganJsUtils;
hoganUtils = new HoganJsUtils(config);
}
FileListPrinter.prototype.generateFileList = function(diffFiles) {
var lineTemplate = hoganUtils.template(baseTemplatesPath, 'line');
var fileDiffCoverageTemplate = hoganUtils.template(baseTemplatesPath, 'diff-coverage');
var files = diffFiles.map(function(file) {
if (!global.fileDisplayMap[file.newName]) {
return '';
}
var fileTypeName = printerUtils.getFileTypeIcon(file);
var iconTemplate = hoganUtils.template(iconsBaseTemplatesPath, fileTypeName);
return lineTemplate.render({
fileHtmlId: printerUtils.getHtmlId(file),
oldName: file.oldName,
newName: file.newName,
fileName: printerUtils.getDiffName(file),
deletedLines: '-' + file.deletedLines,
addedLines: '+' + file.addedLines
}, {
fileIcon: iconTemplate
});
}).join('\n');
var fileDiffCoverages = Object.entries(global.fileCoverageData).map(function([key, value]) {
var diffCoverageRate = value.covered + value.uncovered === 0 ? 0 : parseFloat(value.covered / (value.covered + value.uncovered) * 100).toFixed(2);
var level;
if (diffCoverageRate > 80) {
level = '#4d9221';
} else if (diffCoverageRate > 50) {
level = '#f9cd0b';
} else {
level = '#c21f39';
}
return fileDiffCoverageTemplate.render({
fileName: key,
diffCoverageRate: diffCoverageRate,
level: level
});
}).join('\n');
const effectiveChangedLines = global.coveredDiffStatementNewLines + global.uncoveredDiffStatementNewLines;
const diffStatementCoverageRate = effectiveChangedLines === 0 ? 100 : parseFloat((global.coveredDiffStatementNewLines / effectiveChangedLines * 100).toFixed(2));
const {
coveredLines,
uncoveredLines,
overallLineCoverageRate
} = Utils.getOverallLineCoverageRate(global.coverage);
global.coveredLines = coveredLines;
global.uncoveredLines = uncoveredLines;
global.overallStatementCoverageRate = overallLineCoverageRate;
return hoganUtils.render(baseTemplatesPath, 'wrapper', {
filesNumber: diffFiles.filter(e => !!global.fileDisplayMap[e.newName]).length,
files: files,
diffStatementNewLines: global.diffStatementNewLines,
coveredDiffStatementNewLines: global.coveredDiffStatementNewLines,
uncoveredDiffStatementNewLines: global.uncoveredDiffStatementNewLines,
nonExecutableDiffStatementNewLines: global.nonExecutableDiffStatementNewLines,
effectiveDiffStatementNewLines: global.coveredDiffStatementNewLines + global.uncoveredDiffStatementNewLines,
diffStatementCoverageRate,
coveredLines: global.coveredLines,
uncoveredLines: global.uncoveredLines,
allLines: global.coveredLines + global.uncoveredLines,
overallStatementCoverageRate: global.overallStatementCoverageRate,
displayMode: global.displayMode,
fileDiffCoverages: fileDiffCoverages
});
};
module.exports.FileListPrinter = FileListPrinter;
})();