| /* |
| 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; |