diff options
| author | HumairAK <humair88@hotmail.com> | 2016-07-26 07:43:04 +0000 |
|---|---|---|
| committer | HumairAK <humair88@hotmail.com> | 2016-07-26 07:43:04 +0000 |
| commit | f016bdbc35b7efa44bd63413bde09433ea916c59 (patch) | |
| tree | 238a4ffbd447907876b2f1624cdb6f4abc3009eb /node_modules/mocha/lib/reporters/json.js | |
| parent | 10f1c442e27d82d1fc2c94d1bc0a2ad27917b287 (diff) | |
added some unit testing, need a lot more
Diffstat (limited to 'node_modules/mocha/lib/reporters/json.js')
| -rw-r--r-- | node_modules/mocha/lib/reporters/json.js | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/node_modules/mocha/lib/reporters/json.js b/node_modules/mocha/lib/reporters/json.js new file mode 100644 index 0000000..cd9ec28 --- /dev/null +++ b/node_modules/mocha/lib/reporters/json.js @@ -0,0 +1,90 @@ +/** + * Module dependencies. + */ + +var Base = require('./base'); + +/** + * Expose `JSON`. + */ + +exports = module.exports = JSONReporter; + +/** + * Initialize a new `JSON` reporter. + * + * @api public + * @param {Runner} runner + */ +function JSONReporter(runner) { + Base.call(this, runner); + + var self = this; + var tests = []; + var pending = []; + var failures = []; + var passes = []; + + runner.on('test end', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + passes.push(test); + }); + + runner.on('fail', function(test) { + failures.push(test); + }); + + runner.on('pending', function(test) { + pending.push(test); + }); + + runner.on('end', function() { + var obj = { + stats: self.stats, + tests: tests.map(clean), + pending: pending.map(clean), + failures: failures.map(clean), + passes: passes.map(clean) + }; + + runner.testResults = obj; + + process.stdout.write(JSON.stringify(obj, null, 2)); + }); +} + +/** + * Return a plain-object representation of `test` + * free of cyclic properties etc. + * + * @api private + * @param {Object} test + * @return {Object} + */ +function clean(test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration, + currentRetry: test.currentRetry(), + err: errorJSON(test.err || {}) + }; +} + +/** + * Transform `error` into a JSON object. + * + * @api private + * @param {Error} err + * @return {Object} + */ +function errorJSON(err) { + var res = {}; + Object.getOwnPropertyNames(err).forEach(function(key) { + res[key] = err[key]; + }, err); + return res; +} |
