54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
|
/*
|
||
|
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
|
||
|
};
|
||
|
|
||
|
|