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