UNPKG

mocha-apiary-reporter

Version:

Generate API documentation using Apiary's Blueprint style, then plug it right into apiary.io to get beautiful docs!

56 lines (45 loc) 1.44 kB
var path = require('path'); var mocha = require('mocha'); var options = require('./options'); // Load options (.opts file) var capture = require('./capture'); var sample = require('./model/sample'); var samples = require('./model/samples'); var render = require('./render'); var reporter = options.get().reporter; // Get base reporter name (spec, dot, etc) var Base = mocha.reporters[reporter]; if (!Base) { console.error('Invalid mocha reporter: ' + reporter); process.exit(1); } samples.reset(); function MyReporter(runner) { Base.call(this, runner); runner.on('test', function(test) { capture.reset(); test.ctx.reporter = null; }); runner.on('pass', function(test) { // if we captured anything, it must be an API sample if (capture.hasData()) { var request = capture.get().request; var response = capture.get().response; samples.add(sample.create(test, request, response)); } }); runner.on('end', function() { console.log('\nFound ' + samples.get().length + ' samples'); try { if (this.failures > 0) { throw new Error('Tests failed, no documentation generated'); } render.toDisk(samples.get()); } catch (ex) { console.log(''); console.error(ex.message); console.error(ex.stack); process.exit(1); } }); } MyReporter.prototype.__proto__ = Base.prototype; module.exports = MyReporter;