UNPKG

apex-code-coverage-transformer

Version:

Transform Salesforce Apex code coverage JSONs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.

66 lines 2.01 kB
'use strict'; import { BaseHandler } from './BaseHandler.js'; import { HandlerRegistry } from './HandlerRegistry.js'; /** * Handler for generating Istanbul/NYC JSON coverage reports. * * Istanbul is the most widely-used JavaScript code coverage tool. * This format is compatible with NYC, Codecov, and many other tools. * * Compatible with: * - Istanbul/NYC * - Codecov * - Coveralls * - Node.js coverage tools * * @see https://istanbul.js.org/ */ export class IstanbulCoverageHandler extends BaseHandler { coverageMap = {}; constructor() { super(); } processFile(filePath, fileName, lines) { const statementMap = {}; const s = {}; const lineCoverage = {}; for (const [lineNumber, hits] of Object.entries(lines)) { const line = Number(lineNumber); lineCoverage[lineNumber] = hits; statementMap[lineNumber] = { start: { line, column: 0 }, end: { line, column: 0 }, }; s[lineNumber] = hits; } const coverageFile = { path: filePath, statementMap, fnMap: {}, branchMap: {}, s, f: {}, b: {}, l: lineCoverage, }; this.coverageMap[filePath] = coverageFile; } finalize() { // Sort coverage map by file path for deterministic output const sortedKeys = Object.keys(this.coverageMap).sort(); const sortedMap = {}; for (const key of sortedKeys) { sortedMap[key] = this.coverageMap[key]; } return sortedMap; } } // Self-register this handler HandlerRegistry.register({ name: 'json', description: 'Istanbul JSON format for Node.js and JavaScript tools', fileExtension: '.json', handler: () => new IstanbulCoverageHandler(), compatibleWith: ['Istanbul/NYC', 'Codecov', 'Coveralls', 'Node.js Tools'], }); //# sourceMappingURL=istanbulJson.js.map