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 | /*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
import type { Context, ReportNode } from "../../index";
import ReportBase from "../../report-base";
/** options accepted by {@link TeamcityReport} */
export interface TeamcityOptions {
/** the file to write the report to, defaults to the console */
file?: string | null;
/** the teamcity block name to wrap the output in, defaults to `Code Coverage Summary` */
blockName?: string;
}
class TeamcityReport extends ReportBase {
declare file: string | null;
declare blockName: string;
constructor(opts?: TeamcityOptions) {
super();
opts = opts || {};
this.file = opts.file || null;
this.blockName = opts.blockName || "Code Coverage Summary";
}
onStart(node: ReportNode, context: Context): void {
const metrics = node.getCoverageSummary()!;
const cw = context.writer.writeFile(this.file);
cw.println("");
cw.println("##teamcity[blockOpened name='" + this.blockName + "']");
//Statements Covered
cw.println(lineForKey(metrics.statements.covered, "CodeCoverageAbsBCovered"));
cw.println(lineForKey(metrics.statements.total, "CodeCoverageAbsBTotal"));
//Branches Covered
cw.println(lineForKey(metrics.branches.covered, "CodeCoverageAbsRCovered"));
cw.println(lineForKey(metrics.branches.total, "CodeCoverageAbsRTotal"));
//Functions Covered
cw.println(lineForKey(metrics.functions.covered, "CodeCoverageAbsMCovered"));
cw.println(lineForKey(metrics.functions.total, "CodeCoverageAbsMTotal"));
//Lines Covered
cw.println(lineForKey(metrics.lines.covered, "CodeCoverageAbsLCovered"));
cw.println(lineForKey(metrics.lines.total, "CodeCoverageAbsLTotal"));
cw.println("##teamcity[blockClosed name='" + this.blockName + "']");
cw.close();
}
}
function lineForKey(value: number, teamcityVar: string): string {
return "##teamcity[buildStatisticValue key='" + teamcityVar + "' value='" + value + "']";
}
export default TeamcityReport;
|