46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
|
/*
|
||
|
Copyright 2012-2015, Yahoo Inc.
|
||
|
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
|
||
|
*/
|
||
|
"use strict";
|
||
|
|
||
|
function TeamcityReport(opts) {
|
||
|
opts = opts || {};
|
||
|
this.file = opts.file || null;
|
||
|
this.blockName = opts.blockName || 'Code Coverage Summary';
|
||
|
}
|
||
|
|
||
|
function lineForKey(value, teamcityVar) {
|
||
|
return '##teamcity[buildStatisticValue key=\'' + teamcityVar + '\' value=\'' + value + '\']';
|
||
|
}
|
||
|
|
||
|
TeamcityReport.prototype.onStart = function (node, context) {
|
||
|
var metrics = node.getCoverageSummary(),
|
||
|
cw;
|
||
|
|
||
|
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();
|
||
|
};
|
||
|
|
||
|
module.exports = TeamcityReport;
|