Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 1x 1x 1x | /*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
import type { ContentWriter, Context, ReportNode } from "../../index";
import ReportBase from "../../report-base";
/** options accepted by {@link JsonReport} */
export interface JsonOptions {
/** the file to write the report to, defaults to `coverage-final.json` */
file?: string;
}
class JsonReport extends ReportBase {
declare file: string;
declare first: boolean;
declare contentWriter: ContentWriter;
constructor(opts: JsonOptions) {
super();
this.file = opts.file || "coverage-final.json";
this.first = true;
}
onStart(root: ReportNode, context: Context): void {
this.contentWriter = context.writer.writeFile(this.file);
this.contentWriter.write("{");
}
onDetail(node: ReportNode): void {
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("");
}
onEnd(): void {
const cw = this.contentWriter;
cw.println("}");
cw.close();
}
}
export default JsonReport;
|