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 56 57 58 59 60 61 62 63 64 65 66 | /*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
import type { CoverageSummary } from "@vitest/istanbul-lib-coverage";
import type { ContentWriter, Context, ReportNode } from "../../index";
import ReportBase from "../../report-base";
/** options accepted by {@link JsonSummaryReport} */
export interface JsonSummaryOptions {
/** the file to write the report to, defaults to `coverage-summary.json` */
file?: string;
}
class JsonSummaryReport extends ReportBase {
declare file: string;
declare contentWriter: ContentWriter | null;
declare first: boolean;
constructor(opts: JsonSummaryOptions) {
super();
this.file = opts.file || "coverage-summary.json";
this.contentWriter = null;
this.first = true;
}
onStart(root: ReportNode, context: Context): void {
this.contentWriter = context.writer.writeFile(this.file);
this.contentWriter.write("{");
}
writeSummary(filePath: string, sc: CoverageSummary | null): void {
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("");
}
onSummary(node: ReportNode): void {
if (!node.isRoot()) {
return;
}
this.writeSummary("total", node.getCoverageSummary());
}
onDetail(node: ReportNode): void {
this.writeSummary(node.getFileCoverage().path, node.getCoverageSummary());
}
onEnd(): void {
const cw = this.contentWriter!;
cw.println("}");
cw.close();
}
}
export default JsonSummaryReport;
|