UNPKG

remap-istanbul

Version:

A tool for remapping Istanbul coverage via Source Maps

53 lines (50 loc) 1.66 kB
require('istanbul/index'); const istanbulReportTypes = { clover: 'file', cobertura: 'file', html: 'directory', 'json-summary': 'file', json: 'file', lcovonly: 'file', teamcity: 'file', 'text-lcov': 'console', 'text-summary': 'file', text: 'file', }; /** * Generates an Istanbul Coverage report based on the information passed. * @param {istanbul/lib/_collector} collector An instance of a coverage collector * @param {string} reportType The name of the report type to generate * @param {object} reportOptions The options to pass to the reporter * @param {string|function} dest The filename or outputting function to use for generating the report * @param {istanbul/lib/store} [sources] A store of sources to be passed the reporter * @return {Promise} A promise that resolves when the report is complete. */ module.exports = function writeReport(collector, reportType, reportOptions, dest, sources) { return new Promise((resolve, reject) => { if (!(reportType in istanbulReportTypes)) { reject(new SyntaxError(`Unrecognized report type of "${reportType}".`)); return; } const Reporter = require(`istanbul/lib/report/${reportType}`); const options = Object.assign({}, reportOptions); switch (istanbulReportTypes[reportType]) { case 'file': options.file = dest; break; case 'directory': options.dir = dest; break; case 'console': options.log = dest || console.log; break; default: throw new Error('Unknown reporter type'); } if (sources) { options.sourceStore = sources; } const reporter = new Reporter(options); resolve(reporter.writeReport(collector, true)); }); };