mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-29 09:23:32 +08:00
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
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));
|
|
});
|
|
};
|