UNPKG

macaca-coverage

Version:
67 lines (56 loc) 1.55 kB
'use strict'; const { EOL, } = require('os'); const fs = require('fs'); const path = require('path'); const chalk = require('chalk'); const istanbul = require('macaca-istanbul'); const helper = require('../common/helper'); const logger = require('../common/logger'); const defaultOptions = { }; const { Collector, Reporter, } = istanbul; module.exports = (options = {}) => { const config = Object.assign(defaultOptions, options); logger.debug(`${EOL}${JSON.stringify(config, null, 0)}`); const collector = new Collector(); if (config.file) { const file = path.resolve(config.file); if (helper.isExistedFile(file)) { logger.debug(`file is set to: ${file}`); const content = fs.readFileSync(file, 'utf8'); const json = JSON.parse(content); collector.add(json); } } if (config.html) { config.html = path.resolve(config.html); helper.mkdir(config.html); const htmlReporter = new Reporter(null, config.html); htmlReporter.addAll([ 'html', ]); htmlReporter.write(collector, true, () => { logger.info(`HTML report generated: ${chalk.white.underline(config.html)}`); }); } if (config.json) { config.json = path.resolve(config.json); const jsonReporter = new Reporter(null, config.json); jsonReporter.addAll([ 'json', ]); jsonReporter.write(collector, true, () => { logger.info(`JSON report generated: ${chalk.white.underline(config.json)}`); }); } return { Collector, Reporter, collector, }; };