55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.6 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) { | ||
|  |     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; |