mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-30 09:54:02 +08:00
38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
const fs = require('fs');
|
|
const { Collector } = require('istanbul');
|
|
|
|
/**
|
|
* Takes sources of coverage information and adds them to a collector which then can be subsequently
|
|
* remapped.
|
|
* @param {Array|string} sources The source(s) of the JSON coverage information
|
|
* @param {Object} [options] A hash of options that can be set:
|
|
* readJSON?: A function that can read and parse a JSON file
|
|
* warn?: A function that logs warning messages
|
|
* @return {Object} The loaded coverage object
|
|
*/
|
|
module.exports = function loadCoverage(sources, options = {}) {
|
|
const warn = options.warn || console.warn;
|
|
|
|
const readJSON = options.readJSON
|
|
|| function (filePath) {
|
|
if (!fs.existsSync(filePath)) {
|
|
warn(new Error(`Cannot find file: "${filePath}"`));
|
|
return {};
|
|
}
|
|
return JSON.parse(fs.readFileSync(filePath));
|
|
};
|
|
|
|
if (typeof sources === 'string') {
|
|
sources = [sources];
|
|
}
|
|
if (!sources.length) {
|
|
warn(new SyntaxError('No coverage files supplied!'));
|
|
}
|
|
const collector = new Collector();
|
|
sources.forEach((filePath) => {
|
|
collector.add(readJSON(filePath));
|
|
});
|
|
|
|
return collector.getFinalCoverage();
|
|
};
|