| /* |
| Copyright 2012-2015, Yahoo Inc. |
| Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. |
| */ |
| "use strict"; |
| |
| function JsonSummaryReport(opts) { |
| this.file = opts.file || 'coverage-summary.json'; |
| this.contentWriter = null; |
| this.first = true; |
| } |
| |
| JsonSummaryReport.prototype.onStart = function (root, context) { |
| this.contentWriter = context.writer.writeFile(this.file); |
| this.contentWriter.write("{"); |
| }; |
| |
| JsonSummaryReport.prototype.writeSummary = function (filePath, sc) { |
| var cw = this.contentWriter; |
| if (this.first) { |
| this.first = false; |
| } else { |
| cw.write(","); |
| } |
| cw.write(JSON.stringify(filePath)); |
| cw.write(': '); |
| cw.write(JSON.stringify(sc)); |
| cw.println(""); |
| }; |
| |
| JsonSummaryReport.prototype.onSummary = function (node) { |
| if (!node.isRoot()) { |
| return; |
| } |
| this.writeSummary("total", node.getCoverageSummary()); |
| }; |
| |
| JsonSummaryReport.prototype.onDetail = function (node) { |
| this.writeSummary(node.getFileCoverage().path, node.getCoverageSummary()); |
| }; |
| |
| JsonSummaryReport.prototype.onEnd = function () { |
| var cw = this.contentWriter; |
| cw.println("}"); |
| cw.close(); |
| }; |
| |
| module.exports = JsonSummaryReport; |