blob: bfafa237a608dffc4abc3475e65777cde1ddcf13 [file] [log] [blame]
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
const fs = require('fs');
const libCoverage = require('istanbul-lib-coverage');
const Reporter = require('./reporter');
const filesFor = require('./file-matcher').filesFor;
function run(formats, config, opts, callback) {
if (!callback && typeof opts === 'function') {
callback = opts;
opts = {};
}
opts = opts || {};
const coverageMap = libCoverage.createCoverageMap();
const includePattern = opts.include || '**/coverage*.raw.json';
const reporter = new Reporter(config);
if (!formats || formats.length === 0) {
formats = config.reporting.reports();
}
try {
reporter.addAll(formats);
} catch (ex) {
ex.inputError = true;
return callback(ex);
}
const root = opts.root || process.cwd();
filesFor(
{
root,
includes: [includePattern]
},
(err, files) => {
/* istanbul ignore if */
if (err) {
return callback(err);
}
files.forEach(file => {
const coverageObject = JSON.parse(
fs.readFileSync(file, 'utf8')
);
coverageMap.merge(coverageObject);
});
reporter.write(coverageMap, {});
return callback();
}
);
}
module.exports = {
run
};