| /* |
| 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) { |
| const 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() { |
| const cw = this.contentWriter; |
| cw.println('}'); |
| cw.close(); |
| }; |
| |
| module.exports = JsonSummaryReport; |