asset-packs
Version:
Grunt Plugin/Middleware for packing development source into production assets
63 lines (48 loc) • 1.79 kB
JavaScript
var path = require('path'),
util = require('util'),
fs = require('fs'),
istanbul = require('istanbul');
function PacksCoverageReporter(logger, helper, basePath, reportConf) {
var log = logger.create('packs-coverage');
var collector = new istanbul.Collector();
var finishWriting = function() {};
var writingReport = false;
reportConf = helper.merge({}, {
reporters: ['html'],
dir: 'coverage'
}, reportConf);
this.onBrowserComplete = function(browser, result) {
collector.add(result.coverage);
};
this.onRunComplete = function(browsers) {
var reportBaseDir = path.resolve(basePath, reportConf.dir);
browsers.forEach(function(browser) {
var reportDir = path.resolve(reportBaseDir, browser.name);
writingReport = true;
helper.mkdirIfNotExists(reportDir, function() {
log.debug('Writing coverage to %s', reportDir);
reportConf.reporters.forEach(function(type) {
try {
var reporter = istanbul.Report.create(type, {
dir: reportDir
});
reporter.writeReport(collector, true);
} catch (e) {
log.error('Error for type', type, e);
}
});
writingReport = false;
finishWriting();
});
});
};
this.onExit = function(done) {
if(writingReport) {
finishWriting = done;
} else {
done();
}
};
}
PacksCoverageReporter.$inject = ['logger', 'helper', 'config.basePath', 'config.packsCoverage'];
module.exports = PacksCoverageReporter;