| /* |
| 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) { |
| 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(); |
| }; |
| |
| module.exports = TeamcityReport; |