Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / ibrik / lib / cover.js
1 // Generated by CoffeeScript 1.8.0
2 (function() {
3   var DEFAULT_REPORT_FORMAT, Module, existsSync, fileset, fs, ibrik, istanbul, mkdirp, path, which,
4     __slice = [].slice;
5
6   Module = require('module');
7
8   fs = require('fs');
9
10   path = require('path');
11
12   ibrik = require('./ibrik');
13
14   istanbul = require('istanbul');
15
16   mkdirp = require('mkdirp');
17
18   which = require('which');
19
20   fileset = require('fileset');
21
22   existsSync = fs.existsSync || path.existsSync;
23
24   DEFAULT_REPORT_FORMAT = 'lcov';
25
26   module.exports = function(opts, callback) {
27     var args, cmd, e, excludes, file, reportClassName, reportingDir, reports, runFn, _ref;
28     _ref = opts._, cmd = _ref[0], file = _ref[1], args = 3 <= _ref.length ? __slice.call(_ref, 2) : [];
29     if (!file) {
30       return callback("Need a filename argument for the " + cmd + " command!");
31     }
32     if (!existsSync(file)) {
33       try {
34         file = which.sync(file);
35       } catch (_error) {
36         e = _error;
37         return callback("Unable to resolve file [" + file + "]");
38       }
39     } else {
40       file = path.resolve(file);
41     }
42     excludes = [];
43     if ((opts['default-excludes'] == null) || opts['default-excludes']) {
44       excludes = ['**/node_modules/**', '**/test/**', '**/tests/**'];
45     }
46     reportingDir = '' + (opts.dir || path.resolve(process.cwd(), 'coverage'));
47     mkdirp.sync(reportingDir);
48     reportClassName = opts.report || DEFAULT_REPORT_FORMAT;
49     reports = [
50       istanbul.Report.create(reportClassName, {
51         dir: reportingDir
52       })
53     ];
54     runFn = function() {
55       process.argv = ['node', file].concat(__slice.call(args));
56       if (opts.verbose) {
57         console.log("Running: " + (process.argv.join(' ')));
58       }
59       process.env.running_under_istanbul = 1;
60       return Module.runMain(file, null, true);
61     };
62     if (opts.print !== 'none') {
63       switch (opts.print) {
64         case 'detail':
65           reports.push(istanbul.Report.create('text'));
66           break;
67         case 'both':
68           reports.push(istanbul.Report.create('text'));
69           reports.push(istanbul.Report.create('text-summary'));
70           break;
71         default:
72           reports.push(istanbul.Report.create('text-summary'));
73       }
74     }
75     return istanbul.matcherFor({
76       root: opts.root || process.cwd(),
77       includes: ['**/*.coffee'],
78       excludes: excludes
79     }, function(err, matchFn) {
80       var coverageVar, hookOpts, instrumenter, transformer, _ref1;
81       if (err) {
82         return callback(err, null);
83       }
84       coverageVar = "$$cov_" + (Date.now()) + "$$";
85       instrumenter = new ibrik.Instrumenter({
86         coverageVariable: coverageVar
87       });
88       transformer = instrumenter.instrumentSync.bind(instrumenter);
89       hookOpts = {
90         verbose: opts.verbose
91       };
92       if (opts['self-test']) {
93         ibrik.hook.unloadRequireCache(matchFn);
94       }
95       ibrik.hook.hookRequire(matchFn, transformer, hookOpts);
96       process.once('exit', function() {
97         var collector, cov, report, _i, _len;
98         file = path.resolve(reportingDir, 'coverage.json');
99         if (global[coverageVar] == null) {
100           return callback('No coverage information was collected, exit without writing coverage information', null);
101         } else {
102           cov = global[coverageVar];
103         }
104         mkdirp.sync(reportingDir);
105         console.log('=============================================================================');
106         console.log("Writing coverage object [" + file + "]");
107         if (!opts.headless) {
108           fs.writeFileSync(file, JSON.stringify(cov), 'utf8');
109         }
110         collector = new istanbul.Collector;
111         collector.add(cov);
112         console.log("Writing coverage reports at [" + reportingDir + "]");
113         console.log('=============================================================================');
114         for (_i = 0, _len = reports.length; _i < _len; _i++) {
115           report = reports[_i];
116           report.writeReport(collector, true);
117         }
118         return callback(null, cov);
119       });
120       if (opts != null ? (_ref1 = opts.files) != null ? _ref1.include : void 0 : void 0) {
121         if (typeof opts.files.include === 'string') {
122           opts.files.include = [opts.files.include];
123         }
124         return fileset(opts.files.include.join(' '), excludes.join(' '), function(err, files) {
125           var filename, _i, _len;
126           if (err) {
127             return console.error('Error including files: ', err);
128           } else {
129             for (_i = 0, _len = files.length; _i < _len; _i++) {
130               filename = files[_i];
131               instrumenter.include(filename);
132             }
133             return runFn();
134           }
135         });
136       } else {
137         return runFn();
138       }
139     });
140   };
141
142 }).call(this);