macaca-coverage
Version:
Macaca coverage tool
67 lines (56 loc) • 1.55 kB
JavaScript
;
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,
};
};