| /* |
| Copyright 2012-2015, Yahoo Inc. |
| Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. |
| */ |
| 'use strict'; |
| |
| function JsonReport(opts) { |
| this.file = opts.file || 'coverage-final.json'; |
| this.first = true; |
| } |
| |
| JsonReport.prototype.onStart = function(root, context) { |
| this.contentWriter = context.writer.writeFile(this.file); |
| this.contentWriter.write('{'); |
| }; |
| |
| JsonReport.prototype.onDetail = function(node) { |
| const fc = node.getFileCoverage(); |
| const key = fc.path; |
| const cw = this.contentWriter; |
| |
| if (this.first) { |
| this.first = false; |
| } else { |
| cw.write(','); |
| } |
| cw.write(JSON.stringify(key)); |
| cw.write(': '); |
| cw.write(JSON.stringify(fc)); |
| cw.println(''); |
| }; |
| |
| JsonReport.prototype.onEnd = function() { |
| const cw = this.contentWriter; |
| cw.println('}'); |
| cw.close(); |
| }; |
| |
| module.exports = JsonReport; |