@kpi4me/golden-layout
Version:
A multi-screen javascript Layout manager https://golden-layout.com
106 lines (105 loc) • 3.98 kB
JavaScript
// Generated by CoffeeScript 2.0.0-beta8
void function () {
var DEFAULT_REPORT_FORMAT, existsSync, fs, ibrik, istanbul, mkdirp, Module, path, which;
Module = require('module');
fs = require('fs');
path = require('path');
ibrik = require('./ibrik');
istanbul = require('istanbul');
mkdirp = require('mkdirp');
which = require('which');
existsSync = fs.existsSync || path.existsSync;
DEFAULT_REPORT_FORMAT = 'lcov';
module.exports = function (opts, callback) {
var args, cache$, cmd, e, excludes, file, reportClassName, reportingDir, reports, runFn;
cache$ = opts._;
cmd = cache$[0];
file = cache$[1];
args = 3 <= cache$.length ? [].slice.call(cache$, 2) : [];
if (!file)
return callback('Need a filename argument for the ' + cmd + ' command!');
if (!existsSync(file)) {
try {
file = which.sync(file);
} catch (e$) {
e = e$;
return callback('Unable to resolve file [' + file + ']');
}
} else {
file = path.resolve(file);
}
excludes = [];
if (!(null != opts['default-excludes']) || opts['default-excludes'])
excludes = [
'**/node_modules/**',
'**/test/**',
'**/tests/**'
];
reportingDir = '' + (opts.dir || path.resolve(process.cwd(), 'coverage'));
mkdirp.sync(reportingDir);
reportClassName = opts.report || DEFAULT_REPORT_FORMAT;
reports = [istanbul.Report.create(reportClassName, { dir: reportingDir })];
runFn = function () {
process.argv = [
'node',
file
].concat([].slice.call(args));
if (opts.verbose)
console.log('Running: ' + process.argv.join(' '));
process.env.running_under_istanbul = 1;
return Module.runMain(file, null, true);
};
if (!(opts.print === 'none'))
switch (opts.print) {
case 'detail':
reports.push(istanbul.Report.create('text'));
break;
case 'both':
reports.push(istanbul.Report.create('text'));
reports.push(istanbul.Report.create('text-summary'));
break;
default:
reports.push(istanbul.Report.create('text-summary'));
}
return istanbul.matcherFor({
root: opts.root || process.cwd(),
includes: ['**/*.coffee'],
excludes: excludes
}, function (err, matchFn) {
var coverageVar, hookOpts, instrumenter, transformer;
if (err)
return callback(err, null);
coverageVar = '$$cov_' + Date.now() + '$$';
instrumenter = new ibrik.Instrumenter({ coverageVariable: coverageVar });
transformer = instrumenter.instrumentSync.bind(instrumenter);
hookOpts = { verbose: opts.verbose };
if (opts['self-test'])
ibrik.hook.unloadRequireCache(matchFn);
ibrik.hook.hookRequire(matchFn, transformer, hookOpts);
process.once('exit', function () {
var collector, cov, report;
file = path.resolve(reportingDir, 'coverage.json');
if (!(null != global[coverageVar])) {
return callback('No coverage information was collected, exit without writing coverage information', null);
} else {
cov = global[coverageVar];
}
mkdirp.sync(reportingDir);
console.log('=============================================================================');
console.log('Writing coverage object [' + file + ']');
if (!opts.headless)
fs.writeFileSync(file, JSON.stringify(cov), 'utf8');
collector = new istanbul.Collector;
collector.add(cov);
console.log('Writing coverage reports at [' + reportingDir + ']');
console.log('=============================================================================');
for (var i$ = 0, length$ = reports.length; i$ < length$; ++i$) {
report = reports[i$];
report.writeReport(collector, true);
}
return callback(null, cov);
});
return runFn();
});
};
}.call(this);