run-reports.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. Copyright 2012-2015, Yahoo Inc.
  3. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
  4. */
  5. const fs = require('fs');
  6. const libCoverage = require('istanbul-lib-coverage');
  7. const Reporter = require('./reporter');
  8. const filesFor = require('./file-matcher').filesFor;
  9. function run(formats, config, opts, callback) {
  10. if (!callback && typeof opts === 'function') {
  11. callback = opts;
  12. opts = {};
  13. }
  14. opts = opts || {};
  15. const coverageMap = libCoverage.createCoverageMap();
  16. const includePattern = opts.include || '**/coverage*.raw.json';
  17. const reporter = new Reporter(config);
  18. if (!formats || formats.length === 0) {
  19. formats = config.reporting.reports();
  20. }
  21. try {
  22. reporter.addAll(formats);
  23. } catch (ex) {
  24. ex.inputError = true;
  25. return callback(ex);
  26. }
  27. const root = opts.root || process.cwd();
  28. filesFor(
  29. {
  30. root,
  31. includes: [includePattern]
  32. },
  33. (err, files) => {
  34. /* istanbul ignore if */
  35. if (err) {
  36. return callback(err);
  37. }
  38. files.forEach(file => {
  39. const coverageObject = JSON.parse(
  40. fs.readFileSync(file, 'utf8')
  41. );
  42. coverageMap.merge(coverageObject);
  43. });
  44. reporter.write(coverageMap, {});
  45. return callback();
  46. }
  47. );
  48. }
  49. module.exports = {
  50. run
  51. };